home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #4 / Amiga Plus CD - 2000 - No. 4.iso / Tools / Dev / Bgui / include / bgui / bgui.h < prev   
Encoding:
C/C++ Source or Header  |  2000-05-09  |  80.9 KB  |  1,925 lines

  1. #ifndef BGUI_BGUI_H
  2. #define BGUI_BGUI_H
  3. /*
  4.  * @(#) $Header: /cvsroot/bgui/include/bgui.h,v 41.11 2000/05/09 20:01:36 mlemos Exp $
  5.  *
  6.  * $VER: bgui/bgui.h 41.10 (26.4.96)
  7.  * bgui.library structures and constants.
  8.  *
  9.  * (C) Copyright 1998 Manuel Lemos.
  10.  * (C) Copyright 1996-1997 Ian J. Einman.
  11.  * (C) Copyright 1993-1996 Jaba Development.
  12.  * (C) Copyright 1993-1996 Jan van den Baard.
  13.  * All Rights Reserved.
  14.  *
  15.  * $Log: bgui.h,v $
  16.  * Revision 41.11  2000/05/09 20:01:36  mlemos
  17.  * Merged with the branch Manuel_Lemos_fixes.
  18.  *
  19.  * Revision 41.10.2.12  2000/05/04 04:41:58  mlemos
  20.  * Added the definition of the identifiers for the Bar and Layout group
  21.  * classes.
  22.  *
  23.  * Revision 41.10.2.11  1999/08/29 20:31:34  mlemos
  24.  * Added back the definitions for methods GRM_ADDMEMBER, GRM_REMMEMBER,
  25.  * GRM_DIMENSIONS, GRM_ADDSPACEMEMBER, GRM_INSERTMEMBER, GRM_REPLACEMEMBER.
  26.  * Added the definitions for the method BASE_RELAYOUT and the tag LGO_Relayout.
  27.  * Removed the definitions of the methods that were never implemented:
  28.  * GROUPM_ADDMEMBER, GROUPM_REMMEMBER, GROUPM_INSERTMEMBER
  29.  * GROUPM_REPLACEMEMBER, GROUPM_ADDSPACEMEMBER.
  30.  *
  31.  * Revision 41.10.2.10  1999/08/13 04:36:22  mlemos
  32.  * Changed the pre-processor define to denote that this file was included.
  33.  *
  34.  * Revision 41.10.2.9  1999/08/10 22:38:48  mlemos
  35.  * Remove the definition of the ISEQ_JUSTIFY sequence that was never
  36.  * implemented.
  37.  *
  38.  * Revision 41.10.2.8  1999/07/23 19:47:07  mlemos
  39.  * Added the definition of command sequences to set the draw mode to JAM1,
  40.  * JAM2 or COMPLEMENT.
  41.  *
  42.  * Revision 41.10.2.7  1999/07/17 23:01:47  mlemos
  43.  * Corrected the documentation of the applicability of the attribute
  44.  * PMB_MenuEntries.
  45.  *
  46.  * Revision 41.10.2.6  1999/05/31 00:49:20  mlemos
  47.  * Added the definition of the ID of the TreeView gadget.
  48.  *
  49.  * Revision 41.10.2.5  1998/12/17 04:16:31  mlemos
  50.  * Fixed badly formed comments.
  51.  *
  52.  * Revision 41.10.2.4  1998/12/09 17:34:17  mlemos
  53.  * Added missing log description of the previous revision.
  54.  * Added the definitions of the new text formatting sequences ISEQ_SHADOWED,
  55.  * ISEQ_U2, ISEQ_HU, ISEQ_JUSTIFY, ISEQ_KEEP, ISEQ_WRAP .
  56.  *
  57.  * Revision 41.10.2.3  1998/12/09 17:29:41  mlemos
  58.  *
  59.  * Revision 41.10.2.2  1998/10/12 01:39:09  mlemos
  60.  * Added the inclusion of the bgui_arexx.h include.
  61.  * Added the definition of the tags for BGUI_MakeClass to define class methods.
  62.  *
  63.  * Revision 41.10.2.1  1998/02/26 18:00:27  mlemos
  64.  * Changed C++ comments to standard C comments.
  65.  * Added LGO_Object as publically known group node object attribute.
  66.  *
  67.  * Revision 41.10  1998/02/25 21:13:40  mlemos
  68.  * Bumping to 41.10
  69.  *
  70.  * Revision 1.1  1998/02/25 17:15:41  mlemos
  71.  * Ian sources
  72.  *
  73.  *
  74.  */
  75.  
  76. #ifndef EXEC_TYPES_H
  77. #include <exec/types.h>
  78. #endif /* EXEC_TYPES_H */
  79.  
  80. #ifndef EXEC_LIBRARIES_H
  81. #include <exec/libraries.h>
  82. #endif /* EXEC_LIBRARIES_H */
  83.  
  84. #ifndef INTUITION_CLASSES_H
  85. #include <intuition/classes.h>
  86. #endif /* INTUITION_CLASSES_H */
  87.  
  88. #ifndef INTUITION_CLASSUSR_H
  89. #include <intuition/classusr.h>
  90. #endif /* INTUITION_CLASSUSR_H */
  91.  
  92. #ifndef INTUITION_GADGETCLASS_H
  93. #include <intuition/gadgetclass.h>
  94. #endif /* INTUITION_GADGETCLASS_H */
  95.  
  96. #ifndef INTUITION_CGHOOKS_H
  97. #include <intuition/cghooks.h>
  98. #endif /* INTUITION_CGHOOKS_H */
  99.  
  100. #ifndef LIBRARIES_GADTOOLS_H
  101. #include <libraries/gadtools.h>
  102. #endif /* LIBRARIES_GADTOOLS_H */
  103.  
  104. #ifndef BGUI_IMAGE_H
  105. #include <bgui/bgui_image.h>
  106. #endif /* BGUI_IMAGE_H */
  107.  
  108. #ifndef NO_OLD_BGUI
  109. #include <bgui/bgui_asl.h>
  110. #include <bgui/bgui_arexx.h>
  111. #include <bgui/bgui_cx.h>
  112. #include <bgui/bgui_obsolete.h>
  113. #endif /* NO_OLD_BGUI */
  114.  
  115. /*****************************************************************************
  116.  *
  117.  *      The attribute definitions in this header are all followed by
  118.  *      a small comment. This comment can contain the following things:
  119.  *
  120.  *      I - Attribute can be set with OM_NEW
  121.  *      S - Attribute can be set with OM_SET
  122.  *      G - Attribute can be read with OM_GET
  123.  *      N - Setting this attribute triggers a notification.
  124.  *      U - Attribute can be set with OM_UPDATE.
  125.  */
  126.  
  127. /*****************************************************************************
  128.  *
  129.  *      Miscellanious library definitions.
  130.  */
  131. #define BGUINAME                        "bgui.library"
  132. #define BGUI_MINIMUM                    37
  133. #define BGUIVERSION                     41
  134.  
  135. /*****************************************************************************
  136.  *
  137.  *      BGUI_GetClassPtr() and BGUI_NewObjectA() class ID's.
  138.  */
  139. #define BGUI_LABEL_IMAGE                (0L)
  140. #define BGUI_FRAME_IMAGE                (1L)
  141. #define BGUI_VECTOR_IMAGE               (2L)
  142. #define BGUI_SYSTEM_IMAGE               (3L)
  143. /* 4 through 10 reserved. */
  144. #define BGUI_BASE_GADGET                (11L)
  145. #define BGUI_GROUP_GADGET               (12L)
  146. #define BGUI_BUTTON_GADGET              (13L)
  147. #define BGUI_CYCLE_GADGET               (14L)
  148. #define BGUI_CHECKBOX_GADGET            (15L)
  149. #define BGUI_INFO_GADGET                (16L)
  150. #define BGUI_STRING_GADGET              (17L)
  151. #define BGUI_PROP_GADGET                (18L)
  152. #define BGUI_INDICATOR_GADGET           (19L)
  153. #define BGUI_VIEW_GADGET                (20L)
  154. #define BGUI_PROGRESS_GADGET            (21L)
  155. #define BGUI_SLIDER_GADGET              (22L)
  156. #define BGUI_LISTVIEW_GADGET            (23L)
  157. #define BGUI_MX_GADGET                  (24L)
  158. #define BGUI_PAGE_GADGET                (25L)
  159. #define BGUI_EXTERNAL_GADGET            (26L)
  160. #define BGUI_SEPARATOR_GADGET           (27L)
  161. #define BGUI_AREA_GADGET                (28L)
  162. #define BGUI_RADIOBUTTON_GADGET         (29L)
  163. #define BGUI_PALETTE_GADGET             (30L)
  164. #define BGUI_POPBUTTON_GADGET           (31L)
  165. #define BGUI_TREEVIEW_GADGET            (32L)
  166. #define BGUI_BAR_GADGET                 (33L)
  167. #define BGUI_LAYOUTGROUP_GADGET         (34L)
  168. /* 35 through 39 reserved. */
  169. #define BGUI_WINDOW_OBJECT              (40L)
  170. #define BGUI_FILEREQ_OBJECT             (41L)
  171. #define BGUI_COMMODITY_OBJECT           (42L)
  172. #define BGUI_ASLREQ_OBJECT              (43L)
  173. #define BGUI_FONTREQ_OBJECT             (44L)
  174. #define BGUI_SCREENREQ_OBJECT           (45L)
  175. #define BGUI_AREXX_OBJECT               (46L)
  176. /* 47 through 79 reserved. */
  177. #define BGUI_TEXT_GRAPHIC               (80L)
  178. #define BGUI_FONT_GRAPHIC               (81L)
  179. #define BGUI_PEN_GRAPHIC                (82L)
  180. /* 83 through 99 reserved. */
  181. #define BGUI_ROOT_OBJECT                (100L)
  182. #define BGUI_GADGET_OBJECT              (101L)
  183. #define BGUI_IMAGE_OBJECT               (102L)
  184. /* 102 through 149 reserved. */
  185. #define BGUI_GROUP_NODE                 (150L)
  186. #define BGUI_PAGE_NODE                  (151L)
  187. #define BGUI_LISTVIEW_NODE              (152L)
  188.  
  189. /* Typo */
  190. #define BGUI_SEPERATOR_GADGET           BGUI_SEPARATOR_GADGET
  191.  
  192. /*****************************************************************************
  193.  *
  194.  *      BGUI requester definitions.
  195.  */
  196. struct bguiRequest {
  197.         ULONG            br_Flags;              /* See below.               */
  198.         STRPTR           br_Title;              /* Requester title.         */
  199.         STRPTR           br_GadgetFormat;       /* Gadget labels.           */
  200.         STRPTR           br_TextFormat;         /* Body text format.        */
  201.         UWORD            br_ReqPos;             /* Requester position.      */
  202.         struct TextAttr *br_TextAttr;           /* Requester font.          */
  203.         UBYTE            br_Underscore;         /* Underscore indicator.    */
  204.         UBYTE            br_Reserved0[3];       /* Set to 0!                */
  205.         struct Screen   *br_Screen;             /* Optional screen pointer. */
  206.         ULONG            br_Reserved1[4];       /* Set to 0!                */
  207. };
  208.  
  209. #define BREQF_CENTERWINDOW      (1<<0) /* Center requester on the window.   */
  210. #define BREQF_LOCKWINDOW        (1<<1) /* Lock the parent window.           */
  211. #define BREQF_NO_PATTERN        (1<<2) /* Don't use back-fill pattern.      */
  212. #define BREQF_XEN_BUTTONS       (1<<3) /* Use XEN style buttons.            */
  213. #define BREQF_AUTO_ASPECT       (1<<4) /* Aspect-ratio dependant look.      */
  214. #define BREQF_FAST_KEYS         (1<<5) /* Return/Esc hotkeys.               */
  215. #define BREQF_FUZZ_BUTTONS      (1<<6) /* Use fuzz style buttons.           */
  216.  
  217. /*****************************************************************************
  218.  *
  219.  *      BGUI localization definitions.
  220.  */
  221. struct bguiLocale {
  222.         struct Locale   *bl_Locale;             /* Locale to use.               */
  223.         struct Catalog  *bl_Catalog;            /* Catalog to use.              */
  224.         struct Hook     *bl_LocaleStrHook;      /* Localization function.       */
  225.         struct Hook     *bl_CatalogStrHook;     /* Localization function.       */
  226.         APTR             bl_UserData;           /* For application use.         */
  227. };
  228.  
  229. struct bguiLocaleStr {
  230.         LONG             bls_ID;                /* ID of locale string.         */
  231. };
  232.  
  233. struct bguiCatalogStr {
  234.         LONG             bcs_ID;                /* ID of locale string.         */
  235.         STRPTR           bcs_DefaultString;     /* Default string for this ID.  */
  236. };
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.         
  246. /*****************************************************************************
  247.  *
  248.  *      Tag and method bases.
  249.  *
  250.  *      Range 0x800F0000 - 0x800FFFFF is reserved for BGUI tags.
  251.  *      Range 0x80020000 - 0x8002FFFF is reserved for imageclass tags.
  252.  *      Range 0x80030000 - 0x8003FFFF is reserved for gadgetclass tags.
  253.  *      Range 0x80040000 - 0x8004FFFF is reserved for icclass tags.
  254.  *      Range 0x80080000 - 0x8008FFFF is reserved for gadtools and asl tags.
  255.  *
  256.  *      Range 0x000F0000 - 0x000FFFFF is reserved for BGUI methods.
  257.  *      Range 0x00000001 - 0x0000FFFF is reserved for BOOPSI methods.
  258.  *
  259.  *      For custom classes, keep away from these ranges.  Values greater than
  260.  *      0x80100000 for tags and 0x00100000 for methods are suggested.
  261.  */
  262. #define BGUI_TB                         (TAG_USER|0xF0000)
  263. #define BGUI_MB                         (0xF0000)
  264.  
  265.  
  266. /*****************************************************************************
  267.  *
  268.  *      BGUI graphics definitions.
  269.  */
  270. #define SUBSHINE   (-1)
  271. #define SUBSHADOW  (-2)
  272.  
  273. #define NUMBGUIPENS 2
  274.  
  275. /*
  276.  * The BaseInfo structure contains information needed for many BGUI methods.
  277.  * It is backwards compatible with a V40 GadgetInfo.  Within a BGUI context,
  278.  * you should only use bi_Screen, bi_RPort, bi_DrInfo, and bi_Pens.
  279.  *
  280.  * This structure may be passed to a method that requires a GadgetInfo, but you
  281.  * MUST NOT pass a plain GadgetInfo to any function requiring a BaseInfo.  Do
  282.  * not attempt to make one of these yourself; use AllocBaseInfo().
  283.  */
  284. struct BaseInfo
  285. {
  286.         struct Screen     *bi_IScreen;          /* Intuition Screen we're on.   */
  287.         struct Window     *bi_IWindow;          /* Intuition Window we're in.   */
  288.         struct Requester  *bi_IRequester;       /* Intuition Requester we're in.*/
  289.         struct RastPort   *bi_RPort;            /* RastPort to render into.     */
  290.         struct Layer      *bi_Layer;            /* Layer of the rastport.       */
  291.         struct IBox        bi_Domain;           /* Domain of the gadget.        */
  292.         UBYTE              bi_WindowPens[2];    /* Detail/BlockPen of window.   */
  293.         struct DrawInfo   *bi_DrInfo;           /* DrawInfo of this screen.     */
  294.         ULONG              bi_GIReserved[6];    /* For compatibility.           */
  295.         /*
  296.          * The following are extensions to GadgetInfo.
  297.          */
  298.         UWORD              bi_Version;          /* For expansion.               */
  299.         Object            *bi_Screen;           /* Screen object we're in.      */
  300.         Object            *bi_Window;           /* Window object we're in.      */
  301.         Object            *bi_Requester;        /* Requester object we're in.   */
  302.         UWORD             *bi_Pens;             /* Drawing pens (BGUI).         */
  303.         ULONG              bi_RenderFlags;      /* See below.                   */
  304. };
  305.  
  306. /*
  307.  * The BaseInfo will grow,  Check the version to see what fields/flags are present.
  308.  */
  309. #define BINFO_VER_41_10    1                    /* Initial version.             */
  310.  
  311. /*
  312.  * Render flags describe the look and feel rendering should use.
  313.  */
  314. #define BIRF_BUFFER        (1<<0)               /* Rendering is buffered.       */
  315.  
  316.  
  317.  
  318.  
  319. struct bguiPattern {
  320.         ULONG            bp_Flags;              /* Flags (see below).           */
  321.         UWORD            bp_Left,  bp_Top;      /* Offset into bitmap.          */
  322.         UWORD            bp_Width, bp_Height;   /* Size of cut from bitmap.     */
  323.         struct BitMap   *bp_BitMap;             /* Pattern bitmap.              */
  324.         Object          *bp_Object;             /* Datatype object.             */
  325. };
  326.  
  327. #define BPF_RELATIVE_ORIGIN     (1<<0)          /* Origin relative to box.      */
  328.  
  329.  
  330.  
  331. #define TEXTA_Text                      (BGUI_TB+40001)    /* ISG-- */
  332. #define TEXTA_TextID                    (BGUI_TB+40002)    /* ISG-- */
  333. #define TEXTA_CopyText                  (BGUI_TB+40003)    /* ISG-- */
  334. #define TEXTA_Args                      (BGUI_TB+40004)    /* ISG-- */
  335.  
  336. #define TEXTM_RENDER                    (BGUI_MB+40001)
  337.  
  338. /* Render a text graphic. */
  339.  
  340. struct tmRender {
  341.         ULONG                   MethodID;       /* TEXTM_RENDER                 */
  342.         struct BaseInfo        *tmr_BInfo;      /* RastPort to render into.     */
  343.         struct IBox            *tmr_Bounds;     /* Bounds to fit in.            */
  344. };
  345.  
  346. #define TEXTM_DIMENSIONS                (BGUI_MB+40002)
  347.  
  348. /* Render a text graphic. */
  349.  
  350. struct tmDimensions {
  351.         ULONG                   MethodID;       /* TEXTM_DIMENSIONS             */
  352.         struct RastPort        *tmd_RPort;      /* RastPort for computations.   */
  353.         struct {
  354.                 UWORD          *Width;          /* Storage width in pixels      */
  355.                 UWORD          *Height;         /* Storage height in pixels     */
  356.         }                       tmd_Extent;
  357. };
  358.  
  359.  
  360. /*****************************************************************************
  361.  *
  362.  *      Class implementor information.
  363.  */
  364.  
  365. typedef ULONG  (*FUNCPTR)();
  366.  
  367. typedef struct DispatcherFunction {
  368.    ULONG       df_MethodID;
  369.    FUNCPTR     df_Func;
  370. }  DPFUNC;
  371.  
  372. #define DF_END (~0)
  373.  
  374. /* For use with the BGUI_MakeClass() call. */
  375.  
  376. #define CLASS_SuperClass                (BGUI_TB+10001)
  377. #define CLASS_SuperClassID              (BGUI_TB+10002)
  378. #define CLASS_SuperClassBGUI            (BGUI_TB+10003)
  379. #define CLASS_ClassID                   (BGUI_TB+10004)
  380. #define CLASS_ClassSize                 (BGUI_TB+10005)
  381. #define CLASS_ObjectSize                (BGUI_TB+10006)
  382. #define CLASS_Flags                     (BGUI_TB+10007)
  383. #define CLASS_Dispatcher                (BGUI_TB+10008)
  384. #define CLASS_DFTable                   (BGUI_TB+10009)
  385. #define CLASS_ClassDispatcher           (BGUI_TB+10010)
  386. #define CLASS_ClassDFTable              (BGUI_TB+10011)
  387.  
  388. struct BGUIClassBase
  389. {
  390.    struct Library  bcb_Library;
  391.    Class          *bcb_Class;
  392. };
  393.  
  394.  
  395. /*****************************************************************************
  396.  *
  397.  *      "rootclass" - BOOPSI rootclass replacement for BGUI.
  398.  *
  399.  *      Tags:    negative
  400.  *
  401.  *      Methods: negative
  402.  *
  403.  *      This is a rootclass replacement that augments the rootclass with
  404.  *      notification, more advanced attribute control, and more.
  405.  *      It is actually derived from the intuition rootclass, so any future
  406.  *      rootclass enhancements will work.
  407.  */
  408.  
  409. #define RA_NewSetHighestClass           (BGUI_TB+30001)    /* --G-- */  /* V41.9 */
  410.  
  411. /* New methods */
  412. #define RM_SET                          (BGUI_MB+30001)
  413. #define RM_SETM                         (BGUI_MB+30002)
  414. #define RM_SETCUSTOM                    (BGUI_MB+30003)
  415. #define RM_GET                          (BGUI_MB+30011)
  416. #define RM_GETM                         (BGUI_MB+30012)
  417. #define RM_GETCUSTOM                    (BGUI_MB+30013)
  418. #define RM_REFRESH                      (BGUI_MB+30021)
  419. #define RM_GETATTRFLAGS                 (BGUI_MB+30022)
  420.  
  421. /* Set or get attribute(s). */
  422. struct rmAttr {
  423.         ULONG                   MethodID;
  424.         struct TagItem         *ra_Attr;
  425.         ULONG                   ra_Flags;
  426. };
  427.  
  428. /* Set or get attribute(s). */
  429. struct rmRefresh {
  430.         ULONG                   MethodID;
  431.         APTR                    rr_Context;
  432.         ULONG                   rr_Flags;
  433. };
  434.  
  435. /*
  436.  * The following flags are context specific (and semi-private).
  437.  */
  438. #define RAF_SUPER              (1<<0)  /* Pass to the superclass too.    */
  439. #define RAF_NOTIFY             (1<<1)  /* Send out a notification.       */
  440. #define RAF_REDRAW             (1<<2)  /* Gadget must be redrawn.        */
  441. #define RAF_RESIZE             (1<<3)  /* Gadget may have changed size.  */
  442. #define RAF_CUSTOM             (1<<10) /* Custom RM_SET processing.      */
  443. #define RAF_INITIAL            (1<<11) /* Prevent redundancy in OM_NEW.  */
  444. #define RAF_NOGET              (1<<12) /* Get is not allowed.            */
  445. #define RAF_NOSET              (1<<13) /* Set is not allowed.            */
  446. #define RAF_NOUPDATE           (1<<14) /* Update is not allowed.         */
  447. #define RAF_NOINTERIM          (1<<15) /* Interim update is not allowed. */
  448. #define RAF_UNDERSTOOD         (1<<16) /* Tag was understood.            */
  449. #define RAF_UPDATE             (1<<17) /* This is an update message.     */
  450. #define RAF_INTERIM            (1<<18) /* This is an interim update.     */
  451. #define RAF_BYTE               (0<<28) /* Size is one byte.              */
  452. #define RAF_WORD               (1<<28) /* Size is one word.              */
  453. #define RAF_LONG               (2<<28) /* Size is one long.              */
  454. #define RAF_ADDR               (3<<28) /* Return address of field.       */
  455. #define RAF_BOOL               (1<<30) /* Data is boolean.               */
  456. #define RAF_SIGNED             (1<<31) /* Signed attribute.              */
  457.  
  458. #define RAF_ADDRESS            (RAF_ADDR|RAF_NOSET)
  459. #define RAF_NOP                (RAF_ADDR|RAF_SIGNED)
  460.  
  461. #define P_BITNUM2(f) (f>>1?(f>>2?(f>>3?(f>>4?(f>>5?(f>>6?(f>>7?7:6):5):4):3):2):1):0)
  462. #define P_BITNUM1(f) (f>>8?P_BITNUM2(f>>8):P_BITNUM2(f))
  463. #define P_BITNUM0(f) (f>>16?P_BITNUM1(f>>16):P_BITNUM1(f))
  464.  
  465. #define LENGTH_OF(type,field) sizeof(((struct type *)0)->field)
  466.  
  467. #define TYPE_OF(type,field)       ((LENGTH_OF(type,field) == 2) ? RAF_WORD :\
  468.                                   ((LENGTH_OF(type,field) == 4) ? RAF_LONG : RAF_BYTE))
  469. #define BITOFFSET_OF(type,field,f) (LENGTH_OF(type,field) - (f>>8?(f>>16?(f>>24?4:3):2):1))
  470.  
  471. #define CHART_ATTR(type,field)       ((offsetof(struct type,field) << 16) | TYPE_OF(type,field))
  472. #define CHART_FLAG(type,field,flag) (((offsetof(struct type,field) + BITOFFSET_OF(type,field,flag)) << 16) \
  473.                                      | RAF_BOOL | (P_BITNUM0(flag) << 27))
  474.  
  475.  
  476. #define RM_REMOVE                       (BGUI_MB+30030)   /* OBSOLETE */
  477.  
  478. /* Remove an object from a list. */
  479.  
  480. #define RM_ADDHEAD                      (BGUI_MB+30031)   /* OBSOLETE */
  481. #define RM_ADDTAIL                      (BGUI_MB+30032)   /* OBSOLETE */
  482.  
  483. /* Add an object to a list. */
  484. struct rmAdd {
  485.         ULONG                   MethodID;
  486.         struct List            *ra_List;
  487. };
  488.  
  489. #define RM_INSERT                       (BGUI_MB+30033)   /* OBSOLETE */
  490.  
  491. /* Insert an object into a list. */
  492. struct rmInsert {
  493.         ULONG                   MethodID;
  494.         struct List            *ri_List;
  495.         Object                 *ri_Previous;
  496. };
  497.  
  498. #define RM_PREV                         (BGUI_TB+30034)   /* OBSOLETE */
  499.  
  500. /* Get the previous object. */
  501.  
  502. #define RM_NEXT                         (BGUI_TB+30035)   /* OBSOLETE */
  503.  
  504. /* Get the next object. */
  505.  
  506.  
  507. #define RM_ADDCOLLECTION                (BGUI_TB+30030)
  508. #define RM_REMOVECOLLECTION             (BGUI_TB+30031)
  509.  
  510. /* Manage the collections this object is contained in. */  /* PRIVATE */
  511. struct rmCollection {
  512.         ULONG                   MethodID;
  513.         Object                 *rc_Collection;
  514. };
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522. #define RM_REMNOTIFY                    (BGUI_MB+30040)
  523.  
  524. /* Remove a notification from a notification list. */
  525. struct rmRemoveNotify {
  526.         ULONG                   MethodID;
  527.         APTR                    rrn_Notify;
  528.         ULONG                   rrn_Flags;
  529. };
  530.  
  531. #define RRF_ALL_MAPS           (1<<0)  /* Remove all maps.              */
  532. #define RRF_ALL_ATTRS          (1<<1)  /* Remove all attributes.        */
  533. #define RRF_ALL_METHODS        (1<<2)  /* Remove all methods.           */
  534. #define RRF_ALL_HOOKS          (1<<3)  /* Remove all hooks.             */
  535.  
  536.  
  537. #define RM_ADDMAP                       (BGUI_MB+30041)
  538.  
  539. /* Add an object to the maplist notification list. */
  540. struct rmAddMap {
  541.         ULONG                   MethodID;
  542.         LONG                    ram_Priority;
  543.         ULONG                   ram_Flags;
  544.         struct TagItem          ram_Condition;
  545.         Object                 *ram_Object;
  546.         struct TagItem         *ram_MapList;
  547. };
  548.  
  549. #define RM_ADDATTR                      (BGUI_MB+30042)
  550.  
  551. /* Add an object to the conditional attribute notification list. */
  552. struct rmAddAttr {
  553.         ULONG                   MethodID;
  554.         LONG                    raa_Priority;
  555.         ULONG                   raa_Flags;
  556.         struct TagItem          raa_Condition;
  557.         Object                 *raa_Object;
  558.         struct TagItem          raa_Attr;
  559. };
  560.  
  561.  
  562. #define RM_ADDMETHOD                    (BGUI_MB+30043)
  563.  
  564. /* Add an object to the conditional method notification list. */
  565. struct rmAddMethod {
  566.         ULONG                   MethodID;
  567.         LONG                    ram_Priority;
  568.         ULONG                   ram_Flags;
  569.         struct TagItem          ram_Condition;
  570.         Object                 *ram_Object;
  571.         ULONG                   ram_Size;
  572.         ULONG                   ram_MethodID;
  573. };
  574.  
  575. #define RM_ADDHOOK                      (BGUI_MB+30044)
  576.  
  577. /* Add an object to the conditional method notification list. */
  578. struct rmAddHook {
  579.         ULONG                   MethodID;
  580.         LONG                    rah_Priority;
  581.         ULONG                   rah_Flags;
  582.         struct TagItem          rah_Condition;
  583.         struct Hook            *rah_Hook;
  584. };
  585.  
  586. #define RAF_NO_GINFO           (1<<0)  /* Do not send GadgetInfo.       */
  587. #define RAF_NO_INTERIM         (1<<1)  /* Skip interim messages.        */
  588. #define RAF_FALSE              (1<<2)  /* Condition must be false.      */
  589. #define RAF_TRUE               (1<<3)  /* Condition must be true.       */
  590. #define RAF_MIRROR_MAP         (1<<4)  /* Reverse map the other object. */
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.  
  603.  
  604.  
  605.  
  606.  
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613. /*****************************************************************************
  614.  *
  615.  *      "baseclass" - BOOPSI base gadget.
  616.  *
  617.  *      Tags: 201 - 300                 Methods: 41 - 80
  618.  *
  619.  *      This is a very important BGUI gadget class. All other gadget classes
  620.  *      are sub-classed from this class. It will handle stuff like online
  621.  *      help, notification, labels and frames etc. If you want to write a
  622.  *      gadget class for BGUI be sure to subclass it from this class. That
  623.  *      way your class will automatically inherit the same features.
  624.  */
  625. #define BT_TAGSTART                     (BGUI_TB+241)
  626. #define BT_HelpFile                     (BGUI_TB+241)   /* ISG-- */
  627. #define BT_HelpNode                     (BGUI_TB+242)   /* ISG-- */
  628. #define BT_HelpLine                     (BGUI_TB+243)   /* ISG-- */
  629. #define BT_Inhibit                      (BGUI_TB+244)   /* --G-- */
  630. #define BT_HitBox                       (BGUI_TB+245)   /* --G-- */
  631. #define BT_LabelObject                  (BGUI_TB+246)   /* ISG-- */
  632. #define BT_FrameObject                  (BGUI_TB+247)   /* ISG-- */
  633. #define BT_TextAttr                     (BGUI_TB+248)   /* ISG-- */
  634. #define BT_NoRecessed                   (BGUI_TB+249)   /* ISG-- */
  635. #define BT_LabelClick                   (BGUI_TB+250)   /* ISG-- */
  636. #define BT_HelpText                     (BGUI_TB+251)   /* ISG-- */
  637. #define BT_ToolTip                      (BGUI_TB+252)   /* ISG-- */  /* V40 */
  638. #define BT_DragObject                   (BGUI_TB+253)   /* ISG-- */  /* V40 */
  639. #define BT_DropObject                   (BGUI_TB+254)   /* ISG-- */  /* V40 */
  640. #define BT_DragThreshold                (BGUI_TB+255)   /* ISG-- */  /* V40 */
  641. #define BT_DragQualifier                (BGUI_TB+256)   /* ISG-- */  /* V40 */
  642. #define BT_Key                          (BGUI_TB+257)   /* ISG-- */  /* V41.2 */
  643. #define BT_RawKey                       (BGUI_TB+258)   /* ISG-- */
  644. #define BT_Qualifier                    (BGUI_TB+259)   /* ISG-- */
  645. #define BT_HelpTextID                   (BGUI_TB+260)   /* ISG-- */  /* V41.3 */
  646. #define BT_ToolTipID                    (BGUI_TB+261)   /* ISG-- */
  647. #define BT_MouseActivation              (BGUI_TB+262)   /* ISG-- */  /* V41.5 */
  648. #define BT_Reserved1                    (BGUI_TB+263)   /* RESERVED */
  649. #define BT_Reserved2                    (BGUI_TB+264)   /* RESERVED */
  650. #define BT_Buffer                       (BGUI_TB+265)   /* ISG-- */  /* V41.6 */
  651. #define BT_LeftOffset                   (BGUI_TB+266)   /* ISG-- */
  652. #define BT_RightOffset                  (BGUI_TB+267)   /* ISG-- */
  653. #define BT_TopOffset                    (BGUI_TB+268)   /* ISG-- */
  654. #define BT_BottomOffset                 (BGUI_TB+269)   /* ISG-- */
  655. #define BT_HelpHook                     (BGUI_TB+270)   /* ISG-- */  /* V41.7 */
  656. #define BT_OuterBox                     (BGUI_TB+271)   /* --G-- */  /* V41.8 */
  657. #define BT_InnerBox                     (BGUI_TB+272)   /* --G-- */
  658. #define BT_PostRenderHighestClass       (BGUI_TB+273)   /* --G-- */
  659. #define BT_TAGDONE                      (BGUI_TB+300)
  660.  
  661. #define MOUSEACT_RMB_ACTIVE             (1<<0)
  662. #define MOUSEACT_RMB_REPORT             (1<<1)
  663. #define MOUSEACT_MMB_ACTIVE             (1<<2)
  664. #define MOUSEACT_MMB_REPORT             (1<<3)
  665.  
  666. /* New methods */
  667.  
  668. /* Methods 41 - 46 are obsolete. */
  669.  
  670. #define BASE_SHOWHELP                   (BGUI_MB+47)
  671.  
  672. /* Show attached online-help. */
  673. struct bmShowHelp {
  674.         ULONG                   MethodID;
  675.         struct Window          *bsh_Window;
  676.         struct Requester       *bsh_Requester;
  677.         struct {
  678.                 WORD            X;
  679.                 WORD            Y;
  680.         }                       bsh_Mouse;
  681. };
  682.  
  683. #define BMHELP_OK               (0L)    /* OK, no problems.           */
  684. #define BMHELP_NOT_ME           (1L)    /* Mouse not over the object. */
  685. #define BMHELP_FAILURE          (2L)    /* Showing failed.            */
  686.  
  687. /* Methods 48 - 53 are obsolete. */
  688.  
  689. #define BASE_DRAGGING                   (BGUI_MB+54) /* V40 */
  690.  
  691. /* Return codes for the BASE_DRAGGING method. */
  692. #define BDR_NONE                        0       /* Handle input yourself.   */
  693. #define BDR_DRAGPREPARE                 1       /* Prepare for dragging.    */
  694. #define BDR_DRAGGING                    2       /* Don't handle events.     */
  695. #define BDR_DROP                        3       /* Image dropped.           */
  696. #define BDR_CANCEL                      4       /* Drag canceled.           */
  697.  
  698. #define BASE_DRAGQUERY                  (BGUI_MB+55) /* V40 */
  699.  
  700. /* For both BASE_DRAGQUERY and BASE_DRAGUPDATE. */
  701. struct bmDragPoint {
  702.         ULONG                   MethodID;       /* BASE_DRAGQUERY   */
  703.         struct GadgetInfo      *bmdp_GInfo;     /* GadgetInfo       */
  704.         Object                 *bmdp_Source;    /* Object querying. */
  705.         struct {
  706.                 WORD            X;
  707.                 WORD            Y;
  708.         }                       bmdp_Mouse;     /* Mouse coords.    */
  709. };
  710.  
  711. /* Return codes for BASE_DRAGQUERY. */
  712. #define BQR_REJECT              0       /* Object will not accept drop. */
  713. #define BQR_ACCEPT              1       /* Object will accept drop.     */
  714.  
  715. #define BASE_DRAGUPDATE                 (BGUI_MB+56) /* V40 */
  716.  
  717. /* Return codes for BASE_DRAGUPDATE. */
  718. #define BUR_CONTINUE            0       /* Continue drag. */
  719. #define BUR_ABORT               1       /* Abort drag.    */
  720.  
  721. #define BASE_DROPPED                    (BGUI_MB+57) /* V40 */
  722.  
  723. /* Source object is dropped. */
  724. struct bmDropped {
  725.         ULONG                   MethodID;
  726.         struct GadgetInfo      *bmd_GInfo;      /* GadgetInfo structure. */
  727.         Object                 *bmd_Source;     /* Object dropped.       */
  728.         struct Window          *bmd_SourceWin;  /* Source obj window.    */
  729.         struct Requester       *bmd_SourceReq;  /* Source onj requester. */
  730. };
  731.  
  732. #define BASE_DRAGACTIVE                 (BGUI_MB+58) /* V40 */
  733. #define BASE_DRAGINACTIVE               (BGUI_MB+59) /* V40 */
  734.  
  735. /* Used by both methods defined above. */
  736. struct bmDragMsg {
  737.         ULONG                   MethodID;
  738.         struct GadgetInfo      *bmdm_GInfo;     /* GadgetInfo structure. */
  739.         Object                 *bmdm_Source;    /* Object being dragged. */
  740. };
  741.  
  742. #define BASE_GETDRAGOBJECT              (BGUI_MB+60) /* V40 */
  743.  
  744. /* Obtain BitMap image to drag. */
  745. struct bmGetDragObject {
  746.         ULONG                   MethodID;       /* BASE_GETDRAGOBJECT */
  747.         struct GadgetInfo      *bmgo_GInfo;     /* GadgetInfo         */
  748.         struct IBox            *bmgo_Bounds;    /* Bounds to buffer.  */
  749. };
  750.  
  751. #define BASE_FREEDRAGOBJECT             (BGUI_MB+61) /* V40 */
  752.  
  753. /* Free BitMap image being dragged. */
  754. struct bmFreeDragObject {
  755.         ULONG                   MethodID;       /* BASE_FREEDRAGOBJECT */
  756.         struct GadgetInfo      *bmfo_GInfo;     /* GadgetInfo          */
  757.         struct BitMap          *bmfo_ObjBitMap; /* BitMap to free.     */
  758. };
  759.  
  760. #define BASE_INHIBIT                    (BGUI_MB+62)
  761.  
  762. /* Inhibit/uninhibit this object.               */
  763. struct bmInhibit {
  764.         ULONG                   MethodID;       /* BASE_INHIBIT         */
  765.         ULONG                   bmi_Inhibit;    /* Inhibit on/off.      */
  766. };
  767.  
  768. #define BASE_FINDKEY                    (BGUI_MB+63)    /* V41.2 */
  769.  
  770. /* Locate object with this rawkey.      */
  771. struct bmFindKey {
  772.         ULONG                   MethodID;       /* BASE_FINDKEY         */
  773.         struct {
  774.         UWORD                   Qual, Key;
  775.         }                       bmfk_Key;       /* Key to find.         */
  776.  
  777. };
  778.  
  779. #define BASE_KEYLABEL                   (BGUI_MB+64)    /* V41.2 */
  780.  
  781. /* Attach key in this label to the object.      */
  782. struct bmKeyLabel {
  783.         ULONG                   MethodID;       /* BASE_KEYLABEL        */
  784. };
  785.  
  786. #define BASE_LOCALIZE                   (BGUI_MB+65)    /* V41.3 */
  787.  
  788. /* Localize this object. */
  789. struct bmLocalize {
  790.         ULONG                   MethodID;       /* BASE_LOCALIZE        */
  791.         struct bguiLocale      *bml_Locale;
  792. };
  793.  
  794. #define BASE_RENDER                     (BGUI_MB+66)    /* V41.10 */
  795.  
  796. /* Render this object. */
  797. struct bmRender {
  798.         ULONG                   MethodID;       /* BASE_RENDER          */
  799.         struct BaseInfo        *bmr_BInfo;      /* BaseInfo.            */
  800.         ULONG                   bmr_Flags;      /* See below.           */
  801. };
  802.  
  803. #define BASE_DIMENSIONS                 (BGUI_MB+67)    /* V41.10 */
  804.  
  805. /* Ask an object its dimensions information. */
  806.  
  807. struct bmDimensions {
  808.         ULONG                   MethodID;       /* BASE_DIMENSIONS          */
  809.         struct BaseInfo        *bmd_BInfo;      /* Ready for calculations.  */
  810.         struct bguiExtent      *bmd_Extent;     /* Storage for dimensions.  */
  811.         ULONG                   bmd_Flags;      /* See below.               */
  812. };
  813.  
  814. /* Flags */
  815. #define BDF_CUSTOM_GROUP        (1<<0)  /* Do not use groupclass layout.        */
  816.  
  817.  
  818. #define BASE_LAYOUT                     (BGUI_MB+68)    /* V41.10 */
  819.  
  820. /* Layout this object. */
  821. struct bmLayout {
  822.         ULONG                   MethodID;       /* BASE_LAYOUT              */
  823.         struct BaseInfo        *bml_BInfo;      /* BaseInfo.                */
  824.         struct IBox            *bml_Bounds;     /* Bounds to layout into.   */
  825.         ULONG                   bml_Flags;      /* See below.               */
  826. };
  827.  
  828. #define BASE_RELAYOUT                   (BGUI_MB+69)    /* V41.10 */
  829.  
  830. struct bmRelayout {
  831.    ULONG              MethodID;      /* BASE_RELAYOUT */
  832.    struct GadgetInfo *bmr_GInfo;
  833.    struct RastPort   *bmr_RPort;
  834. };
  835.  
  836.  
  837. /* Flags */
  838. #define BLF_CUSTOM_GROUP        (1<<0)  /* Do not use groupclass layout.        */
  839.  
  840. /* Flags */
  841. #define GDIMF_NO_FRAME          (1<<0)  /* Don't take frame width/height
  842.                                            into consideration.                  */
  843. #define GDIMF_NO_OFFSET         (1<<1)  /* No inner offset from the frame.      */
  844.  
  845.  
  846. /*****************************************************************************
  847.  *
  848.  *      "groupclass" - BOOPSI group gadget.
  849.  *
  850.  *      Tags: 301 - 400                 Methods: 81 - 120
  851.  *
  852.  *      This class is the actual bgui.library layout engine. It will layout
  853.  *      all members in a specific area.  Two group types are available,
  854.  *      horizontal and vertical groups.
  855.  */
  856. #define GROUP_Rows                      (BGUI_TB+301)   /* ISG-- */  /* V41.9 */
  857. #define GROUP_Columns                   (BGUI_TB+302)   /* ISG-- */
  858. #define GROUP_HorizSpacing              (BGUI_TB+303)   /* ISG-- */
  859. #define GROUP_VertSpacing               (BGUI_TB+304)   /* ISG-- */
  860. #define GROUP_HorizAlign                (BGUI_TB+305)   /* ISG-- */
  861. #define GROUP_VertAlign                 (BGUI_TB+306)   /* ISG-- */
  862. #define GROUP_Members                   (BGUI_TB+312)   /* --G-- */
  863. #define GROUP_NumMembers                (BGUI_TB+313)   /* --G-- */
  864. #define GROUP_Style                     (BGUI_TB+321)   /* ISG-- */  /* V37 */
  865. #define GROUP_Spacing                   (BGUI_TB+322)   /* ISG-- */
  866. #define GROUP_HorizOffset               (BGUI_TB+323)   /* I---- */
  867. #define GROUP_VertOffset                (BGUI_TB+324)   /* I---- */
  868. #define GROUP_LeftOffset                (BGUI_TB+325)   /* I---- */
  869. #define GROUP_TopOffset                 (BGUI_TB+326)   /* I---- */
  870. #define GROUP_RightOffset               (BGUI_TB+327)   /* I---- */
  871. #define GROUP_BottomOffset              (BGUI_TB+328)   /* I---- */
  872. #define GROUP_Member                    (BGUI_TB+329)   /* I---- */
  873. #define GROUP_SpaceObject               (BGUI_TB+330)   /* I---- */
  874. #define GROUP_BackFill                  (BGUI_TB+331)   /* IS--- */
  875. #define GROUP_EqualWidth                (BGUI_TB+332)   /* IS--- */
  876. #define GROUP_EqualHeight               (BGUI_TB+333)   /* IS--- */
  877. #define GROUP_Inverted                  (BGUI_TB+334)   /* I---- */
  878. #define GROUP_BackPen                   (BGUI_TB+335)   /* IS--- */  /* V40 */
  879. #define GROUP_BackDriPen                (BGUI_TB+336)   /* IS--- */  /* V40 */
  880. #define GROUP_Offset                    (BGUI_TB+337)   /* I---- */  /* V41 */
  881.  
  882. /* Object layout attributes. */
  883. #define LGO_TAGSTART                    (BGUI_TB+361)
  884. #define LGO_Left                        (BGUI_TB+361)   /* -S--- */  /* V41.9 */
  885. #define LGO_Top                         (BGUI_TB+362)   /* -S--- */
  886. #define LGO_Width                       (BGUI_TB+363)   /* -S--- */
  887. #define LGO_Height                      (BGUI_TB+364)   /* -S--- */
  888. #define LGO_MinWidth                    (BGUI_TB+365)   /* --G-- */
  889. #define LGO_MinHeight                   (BGUI_TB+366)   /* --G-- */
  890. #define LGO_MaxWidth                    (BGUI_TB+367)   /* --G-- */
  891. #define LGO_MaxHeight                   (BGUI_TB+368)   /* --G-- */
  892. #define LGO_NomWidth                    (BGUI_TB+369)   /* --G-- */
  893. #define LGO_NomHeight                   (BGUI_TB+370)   /* --G-- */
  894. #define LGO_FixWidth                    (BGUI_TB+381)   /* I---- */  /* V37 */
  895. #define LGO_FixHeight                   (BGUI_TB+382)   /* I---- */
  896. #define LGO_Weight                      (BGUI_TB+383)   /* IS--- */
  897. #define LGO_FixMinWidth                 (BGUI_TB+384)   /* I---- */
  898. #define LGO_FixMinHeight                (BGUI_TB+385)   /* I---- */
  899. #define LGO_Align                       (BGUI_TB+386)   /* I---- */
  900. #define LGO_NoAlign                     (BGUI_TB+387)   /* I---- */  /* V38 */
  901. #define LGO_FixAspect                   (BGUI_TB+388)   /* IS--- */  /* V41 */
  902. #define LGO_Visible                     (BGUI_TB+389)   /* IS--- */  /* V41.9 */
  903. #define LGO_HAlign                      (BGUI_TB+390)   /* IS--- */
  904. #define LGO_VAlign                      (BGUI_TB+391)   /* IS--- */
  905. #define LGO_Object                      (BGUI_TB+392)   /* --G-- */  /* V41.10 */
  906. #define LGO_Relayout                    (BGUI_TB+393)   /* --G-- */  /* V41.10 */
  907. #define LGO_TAGDONE                     (BGUI_TB+400)
  908.  
  909. /* Default object weight. */
  910. #define DEFAULT_WEIGHT                  50
  911.  
  912. /* Group styles. */
  913. #define GRSTYLE_HORIZONTAL              0
  914. #define GRSTYLE_VERTICAL                1
  915.  
  916. /* Group alignments. */
  917. #define GRALIGN_DEFAULT                 0               /* V41.9 */
  918. #define GRALIGN_LEFT                    1               
  919. #define GRALIGN_TOP                     1
  920. #define GRALIGN_CENTER                  2
  921. #define GRALIGN_RIGHT                   3
  922. #define GRALIGN_BOTTOM                  3
  923.  
  924. /* Group spacings. */
  925. #define GRSPACE_NARROW                  ((ULONG)~0)     /* V41 */
  926. #define GRSPACE_NORMAL                  ((ULONG)~1)
  927. #define GRSPACE_WIDE                    ((ULONG)~2)
  928.  
  929. struct bguiDimension {
  930.         UWORD                   Width;
  931.         UWORD                   Height;
  932. };
  933.  
  934. struct bguiExtent {
  935.         struct bguiDimension    be_Min;
  936.         struct bguiDimension    be_Max;
  937.         struct bguiDimension    be_Nom;
  938. };
  939.  
  940. /* New methods. */
  941.  
  942. #define GRM_ADDMEMBER                   (BGUI_MB+81)
  943.  
  944. /* Add a member to the group. */
  945. struct grmAddMember {
  946.         ULONG                   MethodID;       /* GRM_ADDMEMBER            */
  947.         Object                 *grma_Member;    /* Object to add.           */
  948.         ULONG                   grma_Attr;      /* First of LGO attributes. */
  949. };
  950.  
  951. #define GRM_REMMEMBER                   (BGUI_MB+82)
  952.  
  953. /* Remove a member from the group. */
  954. struct grmRemMember {
  955.         ULONG                   MethodID;       /* GRM_REMMEMBER            */
  956.         Object                 *grmr_Member;    /* Object to remove.        */
  957. };
  958.  
  959. #define GRM_DIMENSIONS                  (BGUI_MB+83)
  960.  
  961. /* Ask an object it's dimensions information. */
  962. struct grmDimensions {
  963.         ULONG                   MethodID;       /* GRM_DIMENSIONS           */
  964.         struct GadgetInfo      *grmd_GInfo;     /* Can be NULL!             */
  965.         struct RastPort        *grmd_RPort;     /* Ready for calculations.  */
  966.         struct {
  967.                 UWORD          *Width;
  968.                 UWORD          *Height;
  969.         }                       grmd_MinSize;   /* Storage for dimensions.  */
  970.         ULONG                   grmd_Flags;     /* See below.               */
  971.         struct {
  972.                 UWORD          *Width;
  973.                 UWORD          *Height;
  974.         }                       grmd_MaxSize;   /* Storage for dimensions.  */
  975.         struct {
  976.                 UWORD          *Width;
  977.                 UWORD          *Height;
  978.         }                       grmd_NomSize;   /* Storage for dimensions.  */
  979. };
  980.  
  981. /* Flags */
  982. #define GDIMF_MAXIMUM           (1<<4)  /* The grmd_MaxSize is requested.       */
  983. #define GDIMF_NOMINAL           (1<<3)  /* The grmd_NomSize is requested.       */
  984.  
  985.  
  986. #define GRM_ADDSPACEMEMBER              (BGUI_MB+84)
  987.  
  988. /* Add a weight controlled spacing member. */
  989. struct grmAddSpaceMember {
  990.         ULONG                   MethodID;       /* GRM_ADDSPACEMEMBER       */
  991.         ULONG                   grms_Weight;    /* Object weight.           */
  992. };
  993.  
  994. #define GRM_INSERTMEMBER                (BGUI_MB+85)
  995.  
  996. /* Insert a member in the group. */
  997. struct grmInsertMember {
  998.         ULONG                   MethodID;       /* GRM_INSERTMEMBER         */
  999.         Object                 *grmi_Member;    /* Member to insert.        */
  1000.         Object                 *grmi_Pred;      /* Insert after this member */
  1001.         ULONG                   grmi_Attr;      /* First of LGO attributes. */
  1002. };
  1003.  
  1004. #define GRM_REPLACEMEMBER               (BGUI_MB+86)    /* V40 */
  1005.  
  1006. /* Replace a member in the group. */
  1007. struct grmReplaceMember {
  1008.         ULONG                   MethodID;       /* GRM_REPLACEMEMBER        */
  1009.         Object                 *grrm_MemberA;   /* Object to replace.       */
  1010.         Object                 *grrm_MemberB;   /* Object which replaces.   */
  1011.         ULONG                   grrm_Attr;      /* First of LGO attributes. */
  1012. };
  1013.  
  1014. #define GRM_WHICHOBJECT                 (BGUI_MB+87)    /* V40 */
  1015.  
  1016. /* Locate object under these coords. */
  1017. struct grmWhichObject {
  1018.         ULONG                   MethodID;       /* GRM_WHICHOBJECT          */
  1019.         struct {
  1020.                  WORD           X;
  1021.                  WORD           Y;
  1022.         }                       grwo_Coords;    /* The coords.              */
  1023. };
  1024.  
  1025. #define GROUPM_NEWMEMBER                (BGUI_MB+88)    /* V41.10 */
  1026.  
  1027. /* Create a new member.  Uses opSet message. */
  1028.  
  1029.  
  1030. #define GROUPM_OBTAINMEMBERS            (BGUI_MB+90)    /* V41.9 */
  1031.  
  1032. /* Get the array of members, locking the list if necessary. */
  1033. struct gmObtainMembers {
  1034.         ULONG                   MethodID;       /* GROUPM_OBTAINMEMBERS     */
  1035.         ULONG                   gmom_Flags;     /* See below.               */
  1036.         UWORD                  *gmom_Number;    /* Get number of members.   */
  1037. };
  1038.  
  1039. #define GROMF_SHARED            (0)     /* Share the list (read-only).      */
  1040. #define GROMF_EXCLUSIVE         (1<<0)  /* Exclusive lock (modify).         */
  1041. #define GROMF_ATTEMPT           (0)     /* Return if lock fails.            */
  1042. #define GROMF_WAIT              (1<<1)  /* Wait until lock succeeds.        */
  1043. #define GROMF_MEMBERS           (0)     /* Get array of member nodes.       */
  1044. #define GROMF_OBJECTS           (1<<2)  /* Get array of actual objects.     */
  1045. #define GROMF_VISIBLE           (1<<3)  /* Visible objects only.            */
  1046.  
  1047. #define GROUPM_RELEASEMEMBERS           (BGUI_MB+91)    /* V41.9 */
  1048.  
  1049. /* Free the array of members. */
  1050. struct gmReleaseMembers {
  1051.         ULONG                   MethodID;       /* GROUPM_RELEASEMEMBERS    */
  1052.         Object                **gmrm_Array;     /* Array to release.        */
  1053. };
  1054.  
  1055.  
  1056. /*****************************************************************************
  1057.  *
  1058.  *      "buttonclass" - BOOPSI button gadget.
  1059.  *
  1060.  *      Tags: 401 - 480                 Methods: 121 - 160
  1061.  *
  1062.  *      GadTools style button gadget.
  1063.  *
  1064.  *      GA_Selected has been made gettable (OM_GET) for toggle-select
  1065.  *      buttons. (ISGNU)
  1066.  */
  1067. #define BUTTON_UNUSED1                  (BGUI_TB+401)   /* */
  1068. #define BUTTON_UNUSED0                  (BGUI_TB+402)   /* */
  1069. #define BUTTON_Image                    (BGUI_TB+403)   /* IS--U */
  1070. #define BUTTON_SelectedImage            (BGUI_TB+404)   /* IS--U */
  1071. #define BUTTON_EncloseImage             (BGUI_TB+405)   /* I---- */  /* V39 */
  1072. #define BUTTON_Vector                   (BGUI_TB+406)   /* IS--U */  /* V41 */
  1073. #define BUTTON_SelectedVector           (BGUI_TB+407)   /* IS--U */  /* V41 */
  1074. #define BUTTON_SelectOnly               (BGUI_TB+408)   /* I---- */  /* V41 */
  1075.  
  1076. /*****************************************************************************
  1077.  *
  1078.  *      "checkboxclass" - BOOPSI checkbox gadget.
  1079.  *
  1080.  *      Tags: 481 - 560                 Methods: 161 - 200
  1081.  *
  1082.  *      GadTools style checkbox gadget.
  1083.  *
  1084.  *      GA_Selected has been made gettable (OM_GET). (ISGNU)
  1085.  */
  1086.  
  1087.  
  1088. /*****************************************************************************
  1089.  *
  1090.  *      "cycleclass" - BOOPSI cycle gadget.
  1091.  *
  1092.  *      Tags: 561 - 640                 Methods: 201 - 240
  1093.  *
  1094.  *      GadTools style cycle gadget.
  1095.  */
  1096. #define CYC_Labels                      (BGUI_TB+561)   /* IS--- */
  1097. #define CYC_Active                      (BGUI_TB+562)   /* ISGNU */
  1098. #define CYC_Popup                       (BGUI_TB+563)   /* IS--- */
  1099. #define CYC_PopActive                   (BGUI_TB+564)   /* IS--- */  /* V40 */
  1100.  
  1101.  
  1102. /*****************************************************************************
  1103.  *
  1104.  *      "infoclass" - BOOPSI information gadget.
  1105.  *
  1106.  *      Tags: 641 - 720                 Methods: 241 - 280
  1107.  *
  1108.  *      Text gadget which supports different colors, text styles and
  1109.  *      text positioning.
  1110.  */
  1111. #define INFO_TextFormat                 (BGUI_TB+641)   /* IS--U */
  1112. #define INFO_Args                       (BGUI_TB+642)   /* IS--U */
  1113. #define INFO_MinLines                   (BGUI_TB+643)   /* IS--U */
  1114. #define INFO_FixTextWidth               (BGUI_TB+644)   /* IS--U */
  1115. #define INFO_HorizOffset                (BGUI_TB+645)   /* I---- */
  1116. #define INFO_VertOffset                 (BGUI_TB+646)   /* I---- */
  1117. #define INFO_FixTextHeight              (BGUI_TB+647)   /* IS--U */  /* V41.9 */
  1118.  
  1119. /* Command sequences. */
  1120. #define ISEQ_B                          "\33b"  /* Bold                      */
  1121. #define ISEQ_I                          "\33i"  /* Italics                   */
  1122. #define ISEQ_U                          "\33u"  /* Underlined                */
  1123. #define ISEQ_N                          "\33n"  /* Normal                    */
  1124. #define ISEQ_SHADOWED                   "\33s"  /* Shadowed                  */
  1125. #define ISEQ_U2                         "\33z"  /* Underlined offset 2       */
  1126. #define ISEQ_HU                         "\33Z"  /* Highlight, underlined     */
  1127. #define ISEQ_C                          "\33c"  /* Centered                  */
  1128. #define ISEQ_R                          "\33r"  /* Right                     */
  1129. #define ISEQ_L                          "\33l"  /* Left                      */
  1130. #define ISEQ_KEEP                       "\33k"  /* This will keep the
  1131.                                                    color/formatting changes
  1132.                                                    from not terminating at
  1133.                                                    the newline               */
  1134. #define ISEQ_WRAP                       "\33w"  /* Wrap text                 */
  1135. #define ISEQ_TEXT                       "\33d2" /* TEXTPEN                   */
  1136. #define ISEQ_SHINE                      "\33d3" /* SHINEPEN                  */
  1137. #define ISEQ_SHADOW                     "\33d4" /* SHADOWPEN                 */
  1138. #define ISEQ_FILL                       "\33d5" /* FILLPEN                   */
  1139. #define ISEQ_FILLTEXT                   "\33d6" /* FILLTEXTPEN               */
  1140. #define ISEQ_HIGHLIGHT                  "\33d8" /* HIGHLIGHTPEN              */
  1141. #define ISEQ_JAM1                       "\33""1"/* JAM1                      */
  1142. #define ISEQ_JAM2                       "\33""2"/* JAM2                      */
  1143. #define ISEQ_COMPLEMENT                 "\33C"  /* COMPLEMENT                */
  1144.  
  1145. /*****************************************************************************
  1146.  *
  1147.  *      "listviewclass" - BOOPSI listview gadget.
  1148.  *
  1149.  *      Tags: 721 - 800                 Methods: 281 - 320
  1150.  *
  1151.  *      GadTools style listview gadget.
  1152.  */
  1153. #define LISTV_TAGSTART                  (BGUI_TB+721)
  1154. #define LISTV_ResourceHook              (BGUI_TB+721)   /* ISG-- */
  1155. #define LISTV_DisplayHook               (BGUI_TB+722)   /* ISG-- */
  1156. #define LISTV_CompareHook               (BGUI_TB+723)   /* ISG-- */
  1157. #define LISTV_Top                       (BGUI_TB+724)   /* ISG-U */
  1158. #define LISTV_ListFont                  (BGUI_TB+725)   /* I-G-- */
  1159. #define LISTV_ReadOnly                  (BGUI_TB+726)   /* I-G-- */
  1160. #define LISTV_MultiSelect               (BGUI_TB+727)   /* ISG-U */
  1161. #define LISTV_EntryArray                (BGUI_TB+728)   /* I---- */
  1162. #define LISTV_Select                    (BGUI_TB+729)   /* -S--U */
  1163. #define LISTV_MakeVisible               (BGUI_TB+730)   /* -S--U */
  1164. #define LISTV_Entry                     (BGUI_TB+731)   /* ---N- */
  1165. #define LISTV_SortEntryArray            (BGUI_TB+732)   /* I---- */
  1166. #define LISTV_EntryNumber               (BGUI_TB+733)   /* ---N- */
  1167. #define LISTV_TitleHook                 (BGUI_TB+734)   /* ISG-- */
  1168. #define LISTV_LastClicked               (BGUI_TB+735)   /* --G-- */
  1169. #define LISTV_ThinFrames                (BGUI_TB+736)   /* ISG-- */
  1170. #define LISTV_LastClickedNum            (BGUI_TB+737)   /* --G-- */  /* V38 */
  1171. #define LISTV_NewPosition               (BGUI_TB+738)   /* ---N- */  /* V38 */
  1172. #define LISTV_NumEntries                (BGUI_TB+739)   /* --G-- */  /* V38 */
  1173. #define LISTV_MinEntriesShown           (BGUI_TB+740)   /* I---- */  /* V38 */
  1174. #define LISTV_SelectMulti               (BGUI_TB+741)   /* -S--U */  /* V39 */
  1175. #define LISTV_SelectNotVisible          (BGUI_TB+742)   /* -S--U */  /* V39 */
  1176. #define LISTV_SelectMultiNotVisible     (BGUI_TB+743)   /* -S--U */  /* V39 */
  1177. #define LISTV_MultiSelectNoShift        (BGUI_TB+744)   /* ISG-U */  /* V39 */
  1178. #define LISTV_DeSelect                  (BGUI_TB+745)   /* -S--U */  /* V39 */
  1179. #define LISTV_DropSpot                  (BGUI_TB+746)   /* --G-- */  /* V40 */
  1180. #define LISTV_ShowDropSpot              (BGUI_TB+747)   /* ISG-- */  /* V40 */
  1181. #define LISTV_ViewBounds                (BGUI_TB+748)   /* --G-- */  /* V40 */
  1182. #define LISTV_CustomDisable             (BGUI_TB+749)   /* ISG-- */  /* V40 */
  1183. #define LISTV_FilterHook                (BGUI_TB+750)   /* ISG-- */  /* V41 */
  1184. #define LISTV_Columns                   (BGUI_TB+751)   /* I-G-U */  /* V41 */
  1185. #define LISTV_ColumnWeights             (BGUI_TB+752)   /* IS--U */  /* V41 */
  1186. #define LISTV_DragColumns               (BGUI_TB+753)   /* ISG-U */  /* V41 */
  1187. #define LISTV_Title                     (BGUI_TB+754)   /* ISG-U */  /* V41 */
  1188. #define LISTV_PropObject                (BGUI_TB+755)   /* ISG-- */  /* V41 */
  1189. #define LISTV_PreClear                  (BGUI_TB+756)   /* ISG-- */  /* V41 */
  1190. #define LISTV_LastColumn                (BGUI_TB+757)   /* --G-- */  /* V41 */
  1191. #define LISTV_LayoutHook                (BGUI_TB+758)   /* IS--U */  /* V41 */
  1192.  
  1193. #define LISTC_TAGSTART                  (BGUI_TB+781)
  1194. #define LISTC_MinWidth                  (BGUI_TB+781)   /* -SG-- */  /* V41.9 */
  1195. #define LISTC_MaxWidth                  (BGUI_TB+762)   /* -SG-- */  /* V41.9 */
  1196. #define LISTC_Weight                    (BGUI_TB+763)   /* -SG-- */  /* V41.9 */
  1197. #define LISTC_Draggable                 (BGUI_TB+764)   /* -SG-- */  /* V41.9 */
  1198. #define LISTC_Hidden                    (BGUI_TB+765)   /* -SG-- */  /* V41.9 */
  1199. #define LISTC_NoSeparator               (BGUI_TB+766)   /* -SG-- */  /* V41.9 */
  1200. #define LISTC_PreClear                  (BGUI_TB+767)   /* -SG-- */  /* V41.9 */
  1201.  
  1202. /*
  1203.  *      LISTV_Select magic numbers.
  1204.  */
  1205. #define LISTV_Select_First              (-1L)                        /* V38 */
  1206. #define LISTV_Select_Last               (-2L)                        /* V38 */
  1207. #define LISTV_Select_Next               (-3L)                        /* V38 */
  1208. #define LISTV_Select_Previous           (-4L)                        /* V38 */
  1209. #define LISTV_Select_Top                (-5L)                        /* V38 */
  1210. #define LISTV_Select_Page_Up            (-6L)                        /* V38 */
  1211. #define LISTV_Select_Page_Down          (-7L)                        /* V38 */
  1212. #define LISTV_Select_All                (-8L)                        /* V39 */
  1213.  
  1214. /*
  1215.  *      The LISTV_ResourceHook is called as follows:
  1216.  *
  1217.  *      rc = hookFunc( REG(A0) struct Hook              *hook,
  1218.  *                     REG(A2) Object                   *lv_object,
  1219.  *                     REG(A1) struct lvResource        *message );
  1220.  */
  1221. struct lvResource {
  1222.         UWORD                   lvr_Command;
  1223.         APTR                    lvr_Entry;
  1224. };
  1225.  
  1226. /* LISTV_ResourceHook commands. */
  1227. #define LVRC_MAKE               1       /* Build the entry. */
  1228. #define LVRC_KILL               2       /* Kill the entry.  */
  1229.  
  1230. /*
  1231.  *      The LISTV_DisplayHook and the LISTV_TitleHook are called as follows:
  1232.  *
  1233.  *      rc = hookFunc( REG(A0) struct Hook             *hook,
  1234.  *                     REG(A2) Object                  *lv_object,
  1235.  *                     REG(A1) struct lvRender         *message );
  1236.  */
  1237. struct lvRender {
  1238.         struct RastPort        *lvr_RPort;      /* RastPort to render in.  */
  1239.         struct DrawInfo        *lvr_DrawInfo;   /* All you need to render. */
  1240.         struct Rectangle        lvr_Bounds;     /* Bounds to render in.    */
  1241.         APTR                    lvr_Entry;      /* Entry to render.        */
  1242.         UWORD                   lvr_State;      /* See below.              */
  1243.         UWORD                   lvr_Flags;      /* None defined yet.       */
  1244.         UWORD                   lvr_Column;     /* Column to render.       */
  1245. };
  1246.  
  1247. /* Rendering states. */
  1248. #define LVRS_NORMAL             0
  1249. #define LVRS_SELECTED           1
  1250. #define LVRS_NORMAL_DISABLED    2
  1251. #define LVRS_SELECTED_DISABLED  3
  1252.  
  1253. /*
  1254.  *      The LISTV_CompareHook is called as follows:
  1255.  *
  1256.  *      rc = hookFunc( REG(A0) struct Hook              *hook,
  1257.  *                     REG(A2) Object                   *lv_object,
  1258.  *                     REG(A1) struct lvCompare         *message );
  1259.  */
  1260. struct lvCompare {
  1261.         APTR                    lvc_EntryA;     /* First entry.  */
  1262.         APTR                    lvc_EntryB;     /* Second entry. */
  1263. };
  1264.  
  1265. /* New Methods. */
  1266. #define LVM_ADDENTRIES                  (BGUI_MB+281)
  1267.  
  1268. /* Add listview entries. */
  1269. struct lvmAddEntries {
  1270.         ULONG                   MethodID;       /* LVM_ADDENTRIES  */
  1271.         struct GadgetInfo      *lvma_GInfo;     /* GadgetInfo      */
  1272.         APTR                   *lvma_Entries;   /* Entries to add. */
  1273.         ULONG                   lvma_How;       /* How to add it.  */
  1274. };
  1275.  
  1276. /* Where to add the entries. */
  1277. #define LVAP_HEAD               1
  1278. #define LVAP_TAIL               2
  1279. #define LVAP_SORTED             3
  1280.  
  1281. #define LVM_ADDSINGLE                   (BGUI_MB+282)
  1282.  
  1283. /* Add a single entry. */
  1284. struct lvmAddSingle {
  1285.         ULONG                   MethodID;       /* LVM_ADDSINGLE */
  1286.         struct GadgetInfo      *lvma_GInfo;     /* GadgetInfo    */
  1287.         APTR                    lvma_Entry;     /* Entry to add. */
  1288.         ULONG                   lvma_How;       /* See above.    */
  1289.         ULONG                   lvma_Flags;     /* See below.    */
  1290. };
  1291.  
  1292. /* Flags. */
  1293. #define LVASF_MAKEVISIBLE       (1<<0)  /* Make entry visible.              */
  1294. #define LVASF_SELECT            (1<<1)  /* Select entry.                    */
  1295. #define LVASF_MULTISELECT       (1<<2)  /* Multi-select entry.          V40 */
  1296. #define LVASF_NOT_VISIBLE       (1<<3)  /* Do not make visible.         V40 */
  1297.  
  1298. /* Clear the entire list. ( Uses a lvmCommand structure as defined below.) */
  1299. #define LVM_CLEAR                       (BGUI_MB+283)
  1300.  
  1301. #define LVM_FIRSTENTRY                  (BGUI_MB+284)
  1302. #define LVM_LASTENTRY                   (BGUI_MB+285)
  1303. #define LVM_NEXTENTRY                   (BGUI_MB+286)
  1304. #define LVM_PREVENTRY                   (BGUI_MB+287)
  1305.  
  1306. /* Get an entry. */
  1307. struct lvmGetEntry {
  1308.         ULONG                   MethodID;       /* Any of the above. */
  1309.         APTR                    lvmg_Previous;  /* Previous entry.   */
  1310.         ULONG                   lvmg_Flags;     /* See below.        */
  1311. };
  1312.  
  1313. #define LVGEF_SELECTED          (1<<0)  /* Get selected entries. */
  1314.  
  1315. #define LVM_REMENTRY                    (BGUI_MB+288)
  1316.  
  1317. /* Remove an entry. */
  1318. struct lvmRemEntry {
  1319.         ULONG                   MethodID;       /* LVM_REMENTRY      */
  1320.         struct GadgetInfo      *lvmr_GInfo;     /* GadgetInfo        */
  1321.         APTR                    lvmr_Entry;     /* Entry to remove.  */
  1322. };
  1323.  
  1324. #define LVM_REFRESH                     (BGUI_MB+289)
  1325. #define LVM_SORT                        (BGUI_MB+290)
  1326. #define LVM_LOCKLIST                    (BGUI_MB+291)
  1327. #define LVM_UNLOCKLIST                  (BGUI_MB+292)
  1328.  
  1329. /* Refresh/Sort list. */
  1330. struct lvmCommand {
  1331.         ULONG                   MethodID;       /* LVM_REFRESH       */
  1332.         struct GadgetInfo      *lvmc_GInfo;     /* GadgetInfo        */
  1333. };
  1334.  
  1335. #define LVM_MOVE                        (BGUI_MB+293) /* V38 */
  1336.  
  1337. /* Move an entry in the list. */
  1338. struct lvmMove {
  1339.         ULONG                   MethodID;       /* LVM_MOVE          */
  1340.         struct GadgetInfo      *lvmm_GInfo;     /* GadgetInfo        */
  1341.         APTR                    lvmm_Entry;     /* Entry to move     */
  1342.         ULONG                   lvmm_Direction; /* See below         */
  1343.         ULONG                   lvmm_NewPos;    /* New position. V40 */
  1344. };
  1345.  
  1346. /* Move directions. */
  1347. #define LVMOVE_UP               0       /* Move entry up.            */
  1348. #define LVMOVE_DOWN             1       /* Move entry down.          */
  1349. #define LVMOVE_TOP              2       /* Move entry to the top.    */
  1350. #define LVMOVE_BOTTOM           3       /* Move entry to the bottom. */
  1351. #define LVMOVE_NEWPOS           4       /* Move to new position. V40 */
  1352.  
  1353. #define LVM_REPLACE                     (BGUI_MB+294) /* V39 */
  1354.  
  1355. /* Replace an entry by another. */
  1356. struct lvmReplace {
  1357.         ULONG                   MethodID;       /* LVM_REPLACE       */
  1358.         struct GadgetInfo      *lvmr_GInfo;     /* GadgetInfo        */
  1359.         APTR                    lvmr_OldEntry;  /* Entry to replace. */
  1360.         APTR                    lvmr_NewEntry;  /* New entry.        */
  1361. };
  1362.  
  1363. #define LVM_REDRAW                      (BGUI_MB+295) /* V40 */
  1364.  
  1365. #define LVM_INSERTENTRIES               (BGUI_MB+296) /* V40 */
  1366.  
  1367. /* Insert listview entries. */
  1368. struct lvmInsertEntries {
  1369.         ULONG                   MethodID;       /* LVM_INSERTENTRIES */
  1370.         struct GadgetInfo      *lvmi_GInfo;     /* GadgetInfo        */
  1371.         ULONG                   lvmi_Pos;       /* Position.         */
  1372.         APTR                   *lvmi_Entries;   /* Entries to insert.*/
  1373. };
  1374.  
  1375. #define LVM_INSERTSINGLE                (BGUI_MB+297) /* V40 */
  1376.  
  1377. /* Insert a single entry. */
  1378. struct lvmInsertSingle {
  1379.         ULONG                   MethodID;       /* LVM_INSERTSINGLE  */
  1380.         struct GadgetInfo      *lvis_GInfo;     /* GadgetInfo        */
  1381.         ULONG                   lvis_Pos;       /* Position.         */
  1382.         APTR                    lvis_Entry;     /* Entry to insert.  */
  1383.         ULONG                   lvis_Flags;     /* See LVM_ADDSINGLE */
  1384. };
  1385.  
  1386. #define LVM_REMSELECTED                 (BGUI_MB+298)   /* V40 */
  1387.  
  1388. #define LVM_REDRAWSINGLE                (BGUI_MB+299)   /* V41.7 */
  1389.  
  1390. /* Redraw a single entry or column. */
  1391. struct lvmRedrawSingle {
  1392.         ULONG                   MethodID;       /* LVM_REDRAWSINGLE  */
  1393.         struct GadgetInfo      *lvrs_GInfo;     /* GadgetInfo.       */
  1394.         APTR                    lvrs_Entry;     /* Entry to redraw.  */
  1395.         ULONG                   lvrs_Column;    /* Column to redraw. */
  1396.         ULONG                   lvrs_Flags;     /* See below.        */
  1397. };
  1398.  
  1399. #define LVRF_ALL_COLUMNS 1
  1400. #define LVRF_ALL_ENTRIES 2
  1401.  
  1402. /* Set column attributes. */
  1403. #define LVM_SETCOLUMNATTRS              (BGUI_MB+300)   /* V41.9 */
  1404.  
  1405. /* Get column attributes. */
  1406. #define LVM_GETCOLUMNATTRS              (BGUI_MB+301)   /* V41.9 */
  1407.  
  1408. struct lvmColumnAttrs {
  1409.         ULONG                   MethodID;       /* LVM_???COLUMNATTRS */
  1410.         struct GadgetInfo      *lvca_GInfo;     /* GadgetInfo.        */
  1411.         ULONG                   lvca_Column;    /* Column number.     */
  1412.         ULONG                   lvca_AttrList;  /* First LISTC attr.  */
  1413. };
  1414.  
  1415.  
  1416.  
  1417. /*****************************************************************************
  1418.  *
  1419.  *      "progressclass" - BOOPSI progression gadget.
  1420.  *
  1421.  *      Tags: 801 - 880                 Methods: 321 - 360
  1422.  *
  1423.  *      Progression indicator fuel guage.
  1424.  */
  1425. #define PROGRESS_Min                    (BGUI_TB+801)   /* IS--- */
  1426. #define PROGRESS_Max                    (BGUI_TB+802)   /* IS--- */
  1427. #define PROGRESS_Done                   (BGUI_TB+803)   /* ISGNU */
  1428. #define PROGRESS_Vertical               (BGUI_TB+804)   /* I---- */
  1429. #define PROGRESS_Divisor                (BGUI_TB+805)   /* I---- */
  1430. #define PROGRESS_FormatString           (BGUI_TB+806)   /* I---- */  /* V40 */
  1431.  
  1432.  
  1433. /*****************************************************************************
  1434.  *
  1435.  *      "propclass" - BOOPSI proportional gadget.
  1436.  *
  1437.  *      Tags: 881 - 960                 Methods: 361 - 400
  1438.  *
  1439.  *      GadTools style scroller gadget.
  1440.  */
  1441. #define PGA_Arrows                      (BGUI_TB+881)   /* I---- */
  1442. #define PGA_ArrowSize                   (BGUI_TB+882)   /* I---- */
  1443. #define PGA_Reserved1                   (BGUI_TB+883)   /* RESERVED */
  1444. #define PGA_ThinFrame                   (BGUI_TB+884)   /* I---- */
  1445. #define PGA_XenFrame                    (BGUI_TB+885)   /* I---- */
  1446. #define PGA_NoFrame                     (BGUI_TB+886)   /* I---- */  /* V40 */
  1447.  
  1448.  
  1449. /*****************************************************************************
  1450.  *
  1451.  *      "stringclass" - BOOPSI string gadget.
  1452.  *
  1453.  *      Tags: 961 - 1040                Methods: 401 - 440
  1454.  *
  1455.  *      GadTools style string/integer gadget.
  1456.  */
  1457. #define STRINGA_UNUSED1                 (BGUI_TB+961)   /* */
  1458. #define STRINGA_UNUSED2                 (BGUI_TB+962)   /* */
  1459. #define STRINGA_MinCharsVisible         (BGUI_TB+963)   /* I---- */  /* V39 */
  1460. #define STRINGA_IntegerMin              (BGUI_TB+964)   /* IS--U */  /* V39 */
  1461. #define STRINGA_IntegerMax              (BGUI_TB+965)   /* IS--U */  /* V39 */
  1462. #define STRINGA_StringInfo              (BGUI_TB+966)   /* --G-- */  /* V40 */
  1463.  
  1464. #define SM_FORMAT_STRING                (BGUI_MB+401)   /* V39 */
  1465.  
  1466. /* Format the string contents. */
  1467. struct smFormatString {
  1468.         ULONG              MethodID;    /* SM_FORMAT_STRING    */
  1469.         struct GadgetInfo *smfs_GInfo;  /* GadgetInfo          */
  1470.         UBYTE             *smfs_FStr;   /* Format string       */
  1471.         ULONG              smfs_Arg1;   /* Format arg          */
  1472.         /* ULONG           smfs_Arg2; */
  1473.         /* ... */
  1474. };
  1475.  
  1476.  
  1477. /*****************************************************************************
  1478.  *
  1479.  *      "viewclass" - BOOPSI view object.                            -- V41 --
  1480.  *
  1481.  *      Tags: 1041 - 1120               Methods: 441 - 480
  1482.  *
  1483.  *      Gadget to view a clipped portion of another object.
  1484.  */
  1485. #define VIEW_X                          (BGUI_TB+1041)  /* ISG-U */  /* V41.8 */
  1486. #define VIEW_Y                          (BGUI_TB+1042)  /* ISG-U */
  1487. #define VIEW_MinWidth                   (BGUI_TB+1043)  /* ISG-- */
  1488. #define VIEW_MinHeight                  (BGUI_TB+1044)  /* ISG-- */
  1489. #define VIEW_ScaleMinWidth              (BGUI_TB+1045)  /* ISG-- */
  1490. #define VIEW_ScaleMinHeight             (BGUI_TB+1046)  /* ISG-- */
  1491. #define VIEW_ScaleWidth                 (BGUI_TB+1047)  /* ISG-- */
  1492. #define VIEW_ScaleHeight                (BGUI_TB+1048)  /* ISG-- */
  1493. #define VIEW_VScroller                  (BGUI_TB+1049)  /* IS--- */
  1494. #define VIEW_HScroller                  (BGUI_TB+1050)  /* IS--- */
  1495. #define VIEW_AbsoluteX                  (BGUI_TB+1051)  /* --G-- */
  1496. #define VIEW_AbsoluteY                  (BGUI_TB+1052)  /* --G-- */
  1497. #define VIEW_Object                     (BGUI_TB+1053)  /* ISG-U */
  1498. #define VIEW_NoDisposeObject            (BGUI_TB+1054)  /* ISG-- */
  1499.  
  1500. /*****************************************************************************
  1501.  *
  1502.  *      "pageclass" - BOOPSI paging gadget.
  1503.  *
  1504.  *      Tags: 1121 - 1200               Methods: 481 - 520
  1505.  *
  1506.  *      Gadget to handle pages of gadgets.
  1507.  */
  1508. #define PAGE_Active                     (BGUI_TB+1121)  /* ISGNU */
  1509. #define PAGE_Member                     (BGUI_TB+1122)  /* I---- */
  1510. #define PAGE_NoBufferRP                 (BGUI_TB+1123)  /* I---- */
  1511. #define PAGE_Inverted                   (BGUI_TB+1124)  /* I---- */
  1512.  
  1513.  
  1514. /*****************************************************************************
  1515.  *
  1516.  *      "mxclass" - BOOPSI mx gadget.
  1517.  *
  1518.  *      Tags: 1201 - 1280               Methods: 521 - 560
  1519.  *
  1520.  *      GadTools style mx gadget.
  1521.  */
  1522. #define MX_Labels                       (BGUI_TB+1201)  /* I---- */
  1523. #define MX_Active                       (BGUI_TB+1202)  /* ISGNU */
  1524. #define MX_LabelPlace                   (BGUI_TB+1203)  /* I---- */
  1525. #define MX_DisableButton                (BGUI_TB+1204)  /* IS--U */
  1526. #define MX_EnableButton                 (BGUI_TB+1205)  /* IS--U */
  1527. #define MX_TabsObject                   (BGUI_TB+1206)  /* I---- */
  1528. #define MX_TabsTextAttr                 (BGUI_TB+1207)  /* I---- */
  1529. #define MX_TabsUpsideDown               (BGUI_TB+1208)  /* I---- */  /* V40 */
  1530. #define MX_TabsBackFill                 (BGUI_TB+1209)  /* I---- */  /* V40 */
  1531. #define MX_TabsBackPen                  (BGUI_TB+1210)  /* I---- */  /* V40 */
  1532. #define MX_TabsBackDriPen               (BGUI_TB+1211)  /* I---- */  /* V40 */
  1533. #define MX_LabelsID                     (BGUI_TB+1212)  /* I---- */  /* V41 */
  1534. #define MX_Spacing                      (BGUI_TB+1213)  /* I---- */  /* V41 */
  1535. #define MX_Type                         (BGUI_TB+1214)  /* I---- */  /* V41.8 */
  1536. #define MX_TabsBackFillHook             (BGUI_TB+1215)  /* I---- */
  1537. #define MX_TabsFillPattern              (BGUI_TB+1216)  /* i---- */
  1538. #define MX_RotateLeft                   (BGUI_TB+1217)  /* I---- */  /* RESERVED */
  1539. #define MX_RotateRight                  (BGUI_TB+1218)  /* I---- */  /* RESERVED */
  1540.  
  1541. #define MXTYPE_RADIOBUTTON              0
  1542. #define MXTYPE_TAB_TOP                  1
  1543. #define MXTYPE_TAB_BOTTOM               2
  1544. #define MXTYPE_TAB_LEFT                 3
  1545. #define MXTYPE_TAB_RIGHT                4
  1546.  
  1547.  
  1548. /*****************************************************************************
  1549.  *
  1550.  *      "sliderclass" - BOOPSI slider gadget.
  1551.  *
  1552.  *      Tags: 1281 - 1360               Methods: 561 - 600
  1553.  *
  1554.  *      GadTools style slider gadget.
  1555.  */
  1556. #define SLIDER_Min                      (BGUI_TB+1281)  /* ISG-U */
  1557. #define SLIDER_Max                      (BGUI_TB+1282)  /* ISG-U */
  1558. #define SLIDER_Level                    (BGUI_TB+1283)  /* ISGNU */
  1559. #define SLIDER_ThinFrame                (BGUI_TB+1284)  /* I---- */
  1560. #define SLIDER_XenFrame                 (BGUI_TB+1285)  /* I---- */
  1561. #define SLIDER_NoFrame                  (BGUI_TB+1286)  /* I---- */  /* V40 */
  1562.  
  1563.  
  1564. /*****************************************************************************
  1565.  *
  1566.  *      "indicatorclass" - BOOPSI indicator gadget.
  1567.  *
  1568.  *      Tags: 1361 - 1440               Methods: ??
  1569.  *
  1570.  *      Textual level indicator gadget.
  1571.  */
  1572. #define INDIC_TAGSTART                  (BGUI_TB+1361)
  1573. #define INDIC_Min                       (BGUI_TB+1361)  /* ISG-U */
  1574. #define INDIC_Max                       (BGUI_TB+1362)  /* ISG-U */
  1575. #define INDIC_Level                     (BGUI_TB+1363)  /* ISG-U */
  1576. #define INDIC_FormatString              (BGUI_TB+1364)  /* ISG-U */
  1577. #define INDIC_Justification             (BGUI_TB+1365)  /* ISG-U */
  1578.  
  1579. /* Justification */
  1580. #define IDJ_LEFT                (0L)
  1581. #define IDJ_CENTER              (1L)
  1582. #define IDJ_RIGHT               (2L)
  1583.  
  1584.  
  1585. /*****************************************************************************
  1586.  *
  1587.  *      "externalclass" - BGUI external class interface.
  1588.  *
  1589.  *      Tags: 1441 - 1500               Methods: ??
  1590.  */
  1591. #define EXT_Class                       (BGUI_TB+1441)  /* I---- */
  1592. #define EXT_ClassID                     (BGUI_TB+1442)  /* I---- */
  1593. #define EXT_MinWidth                    (BGUI_TB+1443)  /* I---- */
  1594. #define EXT_MinHeight                   (BGUI_TB+1444)  /* I---- */
  1595. #define EXT_TrackAttr                   (BGUI_TB+1445)  /* I---- */
  1596. #define EXT_Object                      (BGUI_TB+1446)  /* --G-- */
  1597. #define EXT_NoRebuild                   (BGUI_TB+1447)  /* I---- */
  1598.  
  1599.  
  1600. /*****************************************************************************
  1601.  *
  1602.  *      "separatorclass" - BOOPSI separator class.
  1603.  *
  1604.  *      Tags: 1501 - 1580               Methods: ??
  1605.  */
  1606. #define SEP_Horiz                       (BGUI_TB+1501)  /* IS--- */
  1607. #define SEP_Title                       (BGUI_TB+1502)  /* IS--- */
  1608. #define SEP_Thin                        (BGUI_TB+1503)  /* IS--- */
  1609. #define SEP_Highlight                   (BGUI_TB+1504)  /* IS--- */
  1610. #define SEP_CenterTitle                 (BGUI_TB+1505)  /* IS--- */
  1611. #define SEP_Recessed                    (BGUI_TB+1506)  /* IS--- */  /* V39 */
  1612. #define SEP_TitleLeft                   (BGUI_TB+1507)  /* IS--- */  /* V40 */
  1613. #define SEP_TitleRight                  (BGUI_TB+1508)  /* IS--- */  /* V40 */
  1614. #define SEP_TitleID                     (BGUI_TB+1509)  /* IS--- */  /* V41.8 */
  1615.  
  1616. /* BGUI_TB+1581 through BGUI_TB+1760 reserved. */
  1617.  
  1618. /*****************************************************************************
  1619.  *
  1620.  *      "windowclass" - BOOPSI window class.
  1621.  *
  1622.  *      Tags: 1761 - 1860               Methods: 601 - 660
  1623.  *
  1624.  *      This class creates and maintains an intuition window.
  1625.  */
  1626. #define WINDOW_TAGSTART                 (BGUI_TB+1761)
  1627. #define WINDOW_Position                 (BGUI_TB+1761)  /* IS--- */
  1628. #define WINDOW_ScaleWidth               (BGUI_TB+1762)  /* IS--- */
  1629. #define WINDOW_ScaleHeight              (BGUI_TB+1763)  /* IS--- */
  1630. #define WINDOW_LockWidth                (BGUI_TB+1764)  /* I---- */
  1631. #define WINDOW_LockHeight               (BGUI_TB+1765)  /* I---- */
  1632. #define WINDOW_PosRelBox                (BGUI_TB+1766)  /* I---- */
  1633. #define WINDOW_Bounds                   (BGUI_TB+1767)  /* ISG-- */
  1634. /* BGUI_TB+1768 through BGUI_TB+1770 reserved. */
  1635. #define WINDOW_DragBar                  (BGUI_TB+1771)  /* I---- */
  1636. #define WINDOW_SizeGadget               (BGUI_TB+1772)  /* I---- */
  1637. #define WINDOW_CloseGadget              (BGUI_TB+1773)  /* I---- */
  1638. #define WINDOW_DepthGadget              (BGUI_TB+1774)  /* I---- */
  1639. #define WINDOW_SizeBottom               (BGUI_TB+1775)  /* I---- */
  1640. #define WINDOW_SizeRight                (BGUI_TB+1776)  /* I---- */
  1641. #define WINDOW_Activate                 (BGUI_TB+1777)  /* I---- */
  1642. #define WINDOW_RMBTrap                  (BGUI_TB+1778)  /* I---- */
  1643. #define WINDOW_SmartRefresh             (BGUI_TB+1779)  /* I---- */
  1644. #define WINDOW_ReportMouse              (BGUI_TB+1780)  /* I---- */
  1645. #define WINDOW_Borderless               (BGUI_TB+1781)  /* I---- */  /* V39 */
  1646. #define WINDOW_Backdrop                 (BGUI_TB+1782)  /* I---- */  /* V39 */
  1647. #define WINDOW_ShowTitle                (BGUI_TB+1783)  /* I---- */  /* V39 */
  1648. /* BGUI_TB+1784 through BGUI_TB+1790 reserved. */
  1649. #define WINDOW_IDCMP                    (BGUI_TB+1791)  /* I---- */
  1650. #define WINDOW_SharedPort               (BGUI_TB+1792)  /* IS--- */
  1651. #define WINDOW_Title                    (BGUI_TB+1793)  /* ISGNU */
  1652. #define WINDOW_ScreenTitle              (BGUI_TB+1794)  /* ISGNU */
  1653. #define WINDOW_MenuStrip                (BGUI_TB+1795)  /* I-G-- */
  1654. #define WINDOW_MasterGroup              (BGUI_TB+1796)  /* I---- */
  1655. #define WINDOW_Screen                   (BGUI_TB+1797)  /* IS--- */
  1656. #define WINDOW_PubScreenName            (BGUI_TB+1798)  /* IS--- */
  1657. #define WINDOW_UserPort                 (BGUI_TB+1799)  /* --G-- */
  1658. #define WINDOW_SigMask                  (BGUI_TB+1800)  /* --G-- */
  1659. #define WINDOW_IDCMPHook                (BGUI_TB+1801)  /* IS--- */
  1660. #define WINDOW_VerifyHook               (BGUI_TB+1802)  /* IS--- */
  1661. #define WINDOW_IDCMPHookBits            (BGUI_TB+1803)  /* IS--- */
  1662. #define WINDOW_VerifyHookBits           (BGUI_TB+1804)  /* IS--- */
  1663. #define WINDOW_Font                     (BGUI_TB+1805)  /* ISG-- */
  1664. #define WINDOW_FallBackFont             (BGUI_TB+1806)  /* IS--- */
  1665. #define WINDOW_HelpFile                 (BGUI_TB+1807)  /* IS--- */
  1666. #define WINDOW_HelpNode                 (BGUI_TB+1808)  /* IS--- */
  1667. #define WINDOW_HelpLine                 (BGUI_TB+1809)  /* IS--- */
  1668. #define WINDOW_AppWindow                (BGUI_TB+1810)  /* I---- */
  1669. #define WINDOW_AppMask                  (BGUI_TB+1811)  /* --G-- */
  1670. #define WINDOW_UniqueID                 (BGUI_TB+1812)  /* IS--- */
  1671. #define WINDOW_Window                   (BGUI_TB+1813)  /* --G-- */
  1672. #define WINDOW_HelpText                 (BGUI_TB+1814)  /* IS--- */
  1673. #define WINDOW_NoBufferRP               (BGUI_TB+1815)  /* I---- */
  1674. #define WINDOW_AutoAspect               (BGUI_TB+1816)  /* I-G-- */
  1675. #define WINDOW_PubScreen                (BGUI_TB+1817)  /* IS--- */  /* V39 */
  1676. #define WINDOW_CloseOnEsc               (BGUI_TB+1818)  /* IS--- */  /* V39 */
  1677. #define WINDOW_ActNext                  (BGUI_TB+1819)  /* ----- */  /* V39 */
  1678. #define WINDOW_ActPrev                  (BGUI_TB+1820)  /* ----- */  /* V39 */
  1679. #define WINDOW_NoVerify                 (BGUI_TB+1821)  /* -S--- */  /* V39 */
  1680. #define WINDOW_MenuFont                 (BGUI_TB+1822)  /* IS--- */  /* V40 */
  1681. #define WINDOW_ToolTicks                (BGUI_TB+1823)  /* ISG-U */  /* V40 */
  1682. #define WINDOW_LBorderGroup             (BGUI_TB+1824)  /* I---- */  /* V40 */
  1683. #define WINDOW_TBorderGroup             (BGUI_TB+1825)  /* I---- */  /* V40 */
  1684. #define WINDOW_RBorderGroup             (BGUI_TB+1826)  /* I---- */  /* V40 */
  1685. #define WINDOW_BBorderGroup             (BGUI_TB+1827)  /* I---- */  /* V40 */
  1686. #define WINDOW_TitleZip                 (BGUI_TB+1828)  /* I---- */  /* V40 */
  1687. #define WINDOW_AutoKeyLabel             (BGUI_TB+1829)  /* I---- */  /* V41 */
  1688. #define WINDOW_TitleID                  (BGUI_TB+1830)  /* ISG-- */  /* V41 */
  1689. #define WINDOW_ScreenTitleID            (BGUI_TB+1831)  /* ISG-- */  /* V41 */
  1690. #define WINDOW_HelpTextID               (BGUI_TB+1832)  /* ISG-- */  /* V41 */
  1691. #define WINDOW_Locale                   (BGUI_TB+1833)  /* IS--- */  /* V41 */
  1692. #define WINDOW_Catalog                  (BGUI_TB+1834)  /* IS--- */  /* V41 */
  1693. #define WINDOW_PreBufferRP              (BGUI_TB+1835)  /* IS--- */  /* V41.8 */
  1694. #define WINDOW_ToolTipHook              (BGUI_TB+1836)  /* IS--- */  /* V41.9 */
  1695.  
  1696. /* Possible window positions. */
  1697. #define POS_CENTERSCREEN        (0L)    /* Center on the screen             */
  1698. #define POS_CENTERMOUSE         (1L)    /* Center under the mouse           */
  1699. #define POS_TOPLEFT             (2L)    /* Top-left of the screen           */
  1700.  
  1701. /* New methods */
  1702.  
  1703. #define WM_OPEN         (BGUI_MB+601)   /* Open the window                  */
  1704. #define WM_CLOSE        (BGUI_MB+602)   /* Close the window                 */
  1705. #define WM_SLEEP        (BGUI_MB+603)   /* Put the window to sleep          */
  1706. #define WM_WAKEUP       (BGUI_MB+604)   /* Wake the window up               */
  1707. #define WM_HANDLEIDCMP  (BGUI_MB+605)   /* Call the IDCMP handler           */
  1708.  
  1709. /* Pre-defined WM_HANDLEIDCMP return codes. */
  1710. #define WMHI_CLOSEWINDOW        (1<<16) /* The close gadget was clicked     */
  1711. #define WMHI_NOMORE             (2<<16) /* No more messages                 */
  1712. #define WMHI_INACTIVE           (3<<16) /* The window was de-activated      */
  1713. #define WMHI_ACTIVE             (4<<16) /* The window was activated         */
  1714. #define WMHI_MENUHELP           (5<<16) /* A menuhelp message was sent.     */
  1715. #define WMHI_IGNORE             (~0L)   /* Like it say's: ignore            */
  1716. #define WMHI_RMB                (1<<24) /* The object was activated by RMB  */
  1717. #define WMHI_MMB                (1<<25) /* The object was activated by MMB  */
  1718.  
  1719. #define WM_GADGETKEY                    (BGUI_MB+606)
  1720.  
  1721. /* Add a hotkey to a gadget. */
  1722. struct wmGadgetKey {
  1723.         ULONG              MethodID;       /* WM_GADGETKEY                  */
  1724.         struct Requester  *wmgk_Requester; /* When used in a requester      */
  1725.         Object            *wmgk_Object;    /* Object to activate            */
  1726.         STRPTR             wmgk_Key;       /* Key that triggers activ.      */
  1727. };
  1728.  
  1729. #define WM_KEYACTIVE                    (BGUI_MB+607)
  1730. #define WM_KEYINPUT                     (BGUI_MB+608)
  1731.  
  1732. /* Send with the WM_KEYACTIVE and WM_KEYINPUT methods. */
  1733. struct wmKeyInput {
  1734.         ULONG              MethodID;     /* WM_KEYACTIVE/WM_KEYINPUT        */
  1735.         struct GadgetInfo *wmki_GInfo;   /* GadgetInfo                      */
  1736.         struct InputEvent *wmki_IEvent;  /* Input event                     */
  1737.         ULONG             *wmki_ID;      /* Storage for the object ID       */
  1738.         STRPTR             wmki_Key;     /* Key that triggered activation.  */
  1739. };
  1740.  
  1741. /* Possible WM_KEYACTIVE and WM_KEYINPUT return codes. */
  1742. #define WMKF_MEACTIVE           (0L)     /* Object went active.             */
  1743. #define WMKF_CANCEL             (1<<0)   /* Key activation canceled.        */
  1744. #define WMKF_VERIFY             (1<<1)   /* Key activation confirmed        */
  1745. #define WMKF_ACTIVATE           (1<<2)   /* ActivateGadget() object         */
  1746.  
  1747. #define WM_KEYINACTIVE                  (BGUI_MB+609)
  1748.  
  1749. /* De-activate a key session. */
  1750. struct wmKeyInActive {
  1751.         ULONG              MethodID;    /* WM_KEYINACTIVE                   */
  1752.         struct GadgetInfo *wmkia_GInfo; /* GadgetInfo                       */
  1753. };
  1754.  
  1755. #define WM_DISABLEMENU                  (BGUI_MB+610)
  1756. #define WM_CHECKITEM                    (BGUI_MB+611)
  1757.  
  1758. /* Disable/Enable a menu or Set/Clear a checkit item. */
  1759. struct wmMenuAction {
  1760.         ULONG              MethodID;    /* WM_DISABLEMENU/WM_CHECKITEM      */
  1761.         ULONG              wmma_MenuID; /* Menu it's ID                     */
  1762.         ULONG              wmma_Set;    /* TRUE = set, FALSE = clear        */
  1763. };
  1764.  
  1765. #define WM_MENUDISABLED                 (BGUI_MB+612)
  1766. #define WM_ITEMCHECKED                  (BGUI_MB+613)
  1767.  
  1768. struct wmMenuQuery {
  1769.         ULONG              MethodID;    /* WM_MENUDISABLED/WM_ITEMCHECKED   */
  1770.         ULONG              wmmq_MenuID; /* Menu it's ID                     */
  1771. };
  1772.  
  1773. #define WM_TABCYCLE_ORDER               (BGUI_MB+614)
  1774.  
  1775. /* Set the tab-cycling order. */
  1776. struct wmTabCycleOrder {
  1777.         ULONG              MethodID;    /* WM_TABCYCLE_ORDER                */
  1778.         Object            *wtco_Object1;
  1779.         /* Object         *wtco_Object2; */
  1780.         /* ...  */
  1781.         /* NULL */
  1782. };
  1783.  
  1784. /* Obtain the app message. */
  1785. #define WM_GETAPPMSG                    (BGUI_MB+615)
  1786.  
  1787. #define WM_ADDUPDATE                    (BGUI_MB+616)
  1788.  
  1789. /* Add object to the update notification list. */
  1790. struct wmAddUpdate {
  1791.         ULONG              MethodID;            /* WM_ADDUPDATE             */
  1792.         ULONG              wmau_SourceID;       /* ID of source object.     */
  1793.         Object            *wmau_Target;         /* Target object.           */
  1794.         struct TagItem    *wmau_MapList;        /* Attribute map-list.      */
  1795. };
  1796.  
  1797. #define WM_REPORT_ID                    (BGUI_MB+617) /* V38 */
  1798.  
  1799. /* Report a return code from a IDCMP/Verify hook. */
  1800. struct wmReportID {
  1801.         ULONG              MethodID;            /* WM_REPORT_ID              */
  1802.         ULONG              wmri_ID;             /* ID to report.             */
  1803.         ULONG              wmri_Flags;          /* See below.                */
  1804.         struct Task       *wmri_SigTask;        /* Task to signal.       V40 */
  1805. };
  1806.  
  1807. /* Flags */
  1808. #define WMRIF_DOUBLE_CLICK      (1<<0)          /* Simulate double-click.    */
  1809. #define WMRIF_TASK              (1<<1)          /* Task to signal valid. V40 */
  1810.  
  1811. /* Get the window which signalled us. */
  1812. #define WM_GET_SIGNAL_WINDOW            (BGUI_MB+618) /* V39 */
  1813.  
  1814. #define WM_REMOVE_OBJECT                (BGUI_MB+619) /* V40 */
  1815.  
  1816. /* Remove an object from the window key and/or tabcycle list. */
  1817. struct wmRemoveObject {
  1818.         ULONG              MethodID;            /* WM_REMOVE_OBJECT         */
  1819.         Object            *wmro_Object;         /* Object to remove.        */
  1820.         ULONG              wmro_Flags;          /* See below.               */
  1821. };
  1822.  
  1823. /* Flags */
  1824. #define WMROF_KEY_LIST          (1<<0)          /* Remove from key-list.    */
  1825. #define WMROF_CYCLE_LIST        (1<<1)          /* Remove from cycle list.  */
  1826.  
  1827. #define WM_WHICHOBJECT                  (BGUI_MB+620) /* V40 */
  1828.  
  1829. /* Information for a custom tooltip hook. */          /* V41.9 */
  1830. struct ttCommand {
  1831.         ULONG              ttc_Command;         /* TT_SHOW or TT_HIDE       */
  1832.         Object            *ttc_Object;          /* Object to show tip for.  */
  1833.         APTR               ttc_UserData;        /* See description below.   */
  1834. };
  1835.  
  1836. #define TT_SHOW            1
  1837. /*
  1838.  * TT_SHOW should open a tooltip.  ttc_UserData is undefined.  Return 0 upon
  1839.  * failure, any other value if a tooltip is successfully displayed.  Your
  1840.  * return value will be passed as ttc_UserData to TT_HIDE; useful applications
  1841.  * may include a window pointer or object, or a custom data structure.
  1842.  */
  1843. #define TT_HIDE            2
  1844. /*
  1845.  * This command should close a tooltip previously shown with TT_SHOW.  You are
  1846.  * passed the return value from TT_SHOW as ttc_UserData, so you can close the
  1847.  * window, free resources, etc.
  1848.  */
  1849.  
  1850. /*****************************************************************************
  1851.  *
  1852.  *      "areaclass" - BOOPSI area gadget.
  1853.  *
  1854.  *      Tags: 2021 - 2100               Methods: 741-780
  1855.  *
  1856.  *      AREA_MinWidth and AREA_MinHeight are required attributes.
  1857.  *      Just pass the minimum area size you need here.
  1858.  */
  1859.  
  1860. #define AREA_MinWidth                   (BGUI_TB+2021)  /* I---- */  /* V41 */
  1861. #define AREA_MinHeight                  (BGUI_TB+2022)  /* I---- */  /* V41 */
  1862. #define AREA_AreaBox                    (BGUI_TB+2023)  /* --G-- */  /* V41 */
  1863.  
  1864. /*****************************************************************************
  1865.  *
  1866.  *      "paletteclass" - BOOPSI palette class.
  1867.  *
  1868.  *      Tags: 2101 - 2180               Methods: 781-820
  1869.  */
  1870. #define PALETTE_Depth                   (BGUI_TB+2101)  /* I---- */  /* V41.7 */
  1871. #define PALETTE_ColorOffset             (BGUI_TB+2102)  /* I---- */
  1872. #define PALETTE_PenTable                (BGUI_TB+2103)  /* I---- */
  1873. #define PALETTE_CurrentColor            (BGUI_TB+2104)  /* ISGNU */
  1874.  
  1875. /*****************************************************************************
  1876.  *
  1877.  *      "popbuttonclass" - BOOPSI popbutton class.
  1878.  *
  1879.  *      Tags: 2181 - 2260               Methods: 821-860
  1880.  */
  1881. #define PMB_Image                       (BGUI_TB+2181)  /* IS--- */  /* V41.7 */
  1882. #define PMB_MenuEntries                 (BGUI_TB+2182)  /* I---- */
  1883. #define PMB_MenuNumber                  (BGUI_TB+2183)  /* --GN- */
  1884. #define PMB_PopPosition                 (BGUI_TB+2184)  /* I---- */
  1885. /*
  1886.  * All labelclass attributes are usable at create time (I).
  1887.  * The vectorclass attributes are usable at create time and
  1888.  * with OM_SET (IS).
  1889.  */
  1890.  
  1891. /*
  1892.  * An array of these structures define
  1893.  * the menu labels.
  1894.  */
  1895. struct PopMenu {
  1896.    UBYTE      *pm_Label;               /* Menu text, NULL terminates array. */
  1897.    UWORD       pm_Flags;               /* See below.                        */
  1898.    ULONG       pm_MutualExclude;       /* Mutual-exclusion.                 */
  1899. };
  1900.  
  1901. /* Flags */
  1902. #define PMF_CHECKIT     (1<<0)         /* Checkable (toggle) item.          */
  1903. #define PMF_CHECKED     (1<<1)         /* The item is checked.              */
  1904. #define PMF_DISABLED    (1<<2)         /* The item is disabled. (NMC:Added) */
  1905.  
  1906. /*
  1907. ** Special menu entry.
  1908. **/
  1909. #define PMB_BARLABEL    (UBYTE *)~0
  1910.  
  1911. /* New Methods */
  1912. #define PMBM_CHECK_STATUS               (BGUI_MB+821)
  1913. #define PMBM_CHECK_MENU                 (BGUI_MB+822)
  1914. #define PMBM_UNCHECK_MENU               (BGUI_MB+823)
  1915. #define PMBM_ENABLE_ITEM                (BGUI_MB+824)
  1916. #define PMBM_DISABLE_ITEM               (BGUI_MB+825)
  1917. #define PMBM_ENABLE_STATUS              (BGUI_MB+826)
  1918.  
  1919. struct pmbmCommand {
  1920.    ULONG       MethodID;
  1921.    ULONG       pmbm_MenuNumber;  /* Menu to perform action on. */
  1922. };
  1923.  
  1924. #endif /* BGUI_BGUI_H */
  1925.